Я считаю, что это два разных механизма.
В уязвимом ABI поддержка связанных объектов была единственным способом расширить интерфейс, он работает (я считаю) во время выполнения, выделяя дополнительный список связанных объектов.
Но теперь с LLVM 2 вы можете объявлять ivars в расширениях класса, но он работает только в нехрупком ABI (попробуйте скомпилировать этот код для 32-битного Leopard с хрупким ABI, и вы поймаете синтаксические ошибки). *
Вот статья, объясняющая , как работает нехрупкий ABI . Это требует как времени компиляции, так и поддержки времени выполнения.