Реализация свойств аксессора

Есть ли документация о том, как компилятор автоматически генерирует средства доступа к свойствам?

При написании пользовательских методов доступа (переопределяющих синтезированные) было бы неплохо знать исходную реализацию. Особенно, чтобы увидеть разные реализации средств доступа для свойств с разными атрибутами (weak/strong/retain/copy и т. д.).


person bijan    schedule 12.04.2012    source источник


Ответы (1)


Есть ли документация о том, как компилятор автоматически генерирует средства доступа к свойствам?

Компилятор просто добавляет вызов функции C. Посмотрите на asm (например, _objc_getProperty и _objc_setProperty).

При написании пользовательских методов доступа (переопределяющих синтезированные) было бы неплохо знать исходную реализацию. Особенно, чтобы увидеть разные реализации средств доступа для свойств с разными атрибутами (weak/strong/retain/copy и т. д.).

Реализации общедоступны как часть среды выполнения objc, размещенной по адресу http://www.opensource.apple.com/source/objc4/.

person justin    schedule 12.04.2012
comment
Не могли бы вы сказать мне, где найти его в паблике? - person bijan; 12.04.2012
comment
это текущая версия с открытым исходным кодом .apple.com/source/objc4/objc4-493.11/runtime/ - person justin; 12.04.2012
comment
требуется ли сохранение/выпуск материала при использовании ARC? - person bijan; 12.04.2012
comment
@bijan я не уверен, о чем именно ты меня спрашиваешь. если это поможет: ARC все еще использует подсчет ссылок - он просто в значительной степени абстрагирован от вас. если вы используете примитив, такой как objc_setProperty, тогда да, вам нужно будет передать правильные значения параметров, чтобы счетчики ссылок (а также поведение) были правильными для объявленного свойства. - person justin; 12.04.2012
comment
я имел в виду, что при реализации моих собственных средств доступа мне все еще нужно делать MRC? Например, при реализации установщика для (сохраняемого) свойства: мне все еще нужно освободить старое значение и сохранить новое, или ARC сделает это за меня? - person bijan; 12.04.2012
comment
@bijan по умолчанию, ARC сделает это за вас. документы детализируют это лучше, чем я могу в полях комментариев. - person justin; 13.04.2012
comment
Да, вы правы, я проверю документы. все равно спасибо, ссылка очень помогла! - person bijan; 13.04.2012