This is more of a runtime question than a language question, but there doesn't seem to be a good runtime discussion list.
In the last open-sourced objc runtime release, objc4-551, support for vtable dispatch was removed, and the clang options for supporting it have been mostly disabled.
Anyone know the reasons for making that change, rather than expanding vtable support to include arm? I can think of a few possibilities:
a) vtable dispatch turned out to not actually an overall win, or at least the performance / memory trade-off wasn't a win, even in the old runtime.
b) the faster msgSend dispatch in the newer runtime was faster than the vtable system, or at least close enough to it to make vtables not be worthwhile
c) vtables were a win, but the new class layout to support the inlined cache implementation meant that the only way to avoid breaking the ABI was to kill vtables, and ABI compatibility was worth more than vtables.
But googling doesn't turn up anything to confirm any of those (or anything else).
Paul