создать свойство в объекте-c программно? - PullRequest
0 голосов
/ 04 декабря 2011

Как вы можете создать свойство в target-c программным способом?

Справочная информация:

  • настолько эффективно, основываясь на данных, которые вы читаете из магазина, создайте свойства для класса
  • В частности, я хотел создать некоторые типизированные свойства для представления моих «типов событий», которые я храню в основных данных - так что, хотя EventTypes находятся в coredata в сущности EventTypes, я мог бы прочитать их во время выполнения в классе, а затем сослаться на него их список "EventTypes.ACTIVE_EVENT"

Общая цель, которую я имел в виду, была:

  • моделирование типов в основном хранилище данных
  • но все же есть способ легкого доступа к экземпляру управляемого типа объекта (например, ACTIVE_EVENT) программным способом с использованием подхода простого свойства.

1 Ответ

1 голос
/ 04 декабря 2011

Обычное свойство Objective C обычно заставляет компилятор генерировать код для методов получения и установки. Но приложению iOS запрещено добавлять новый исполняемый код из-за ограничений изолированной программной среды безопасности, поэтому во время выполнения вы не можете программно сделать это так же, как компилятор.

Что вы можете сделать, это использовать среду выполнения Objective C для эмуляции получения и установки свойства, возможно, используя forwardInvocation: и methodSignatureForSelector: методы для обработки нераспознанных сообщений. Данные состояния вспомогательного свойства могут быть сохранены, например, в каком-то изменяемом словаре элементов свойств, хранящихся в объекте класса. Тогда объект может действовать (немного медленнее), как если бы он реализовал свойство, созданное вами программно.

...