Есть ли разница между использованием свойств, объявленных в расширении класса, и связанного хранилища? - PullRequest
1 голос
/ 08 декабря 2011

С Objective-C вы можете добавить iVars / свойства в класс, используя поддержку связанных объектов во время выполнения.

С LLVM 2 теперь вы можете добавлять iVars / свойства в класс, объявив их врасширение класса.

Есть ли разница между ними?У меня такое ощущение, что LLVM просто оборачивает поддержку времени выполнения, но я не уверен.

1 Ответ

2 голосов
/ 27 января 2012

Я считаю, что это два разных механизма.

В уязвимом ABI поддержка связанных объектов была единственным способом расширить интерфейс, он работает (я считаю) во время выполнения, выделяя дополнительный список связанных объектов.

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

Вот статья, объясняющая , как работает нехрупкий ABI . Это требует как времени компиляции, так и поддержки времени выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...