Объявление свойств во время выполнения? - PullRequest
0 голосов
/ 17 февраля 2011

Есть ли способ объявить свойства во время выполнения в Obj-C? Я искал что-то вроде class_addMethod, но для свойств.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Распространенным заблуждением является то, что @property подразумевает генерацию кода. Это не. @synthesize делает это. Так что, на самом деле, ваш вопрос, вероятно, Есть ли способ генерировать методы установки / получения во время выполнения?

Ответ, конечно, да, и вы бы использовали именно то, что вы уже нашли.

0 голосов
/ 26 февраля 2011

Свойства являются синтаксическим сахаром для методов получения / установки.
Вы не можете объявить их во время выполнения. Как сказано выше, как бы вы их использовали?
Но вы можете объявить их и добавить реализацию во время выполнения. Ключевое слово @synthesize просто устанавливает реализацию getter / setter по умолчанию. Чтобы предотвратить это, используйте ключевое слово @dynamic и предоставьте реализацию во время выполнения.

Возможно, вы захотите взглянуть на более легкий подход, такой как перехват сообщений (NSObject >> (id) forwardingTargetForSelector и родственные методы).

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