Objective-C: переменная экземпляра в категории - PullRequest
15 голосов
/ 28 мая 2011

Я просто спрашиваю, можно ли было добавить переменную экземпляра через категорию. Моя особая проблема заключается в том, что мне нужно добавить свойство NSIndexPath к объекту ASIHTTPRequest, но я не хочу подклассить ASIHTTPRequest в принципе.

Есть ли у меня альтернатива?

Спасибо за ваши ответы, Christian

1 Ответ

19 голосов
/ 28 мая 2011

Категория не может объявлять дополнительные переменные экземпляра, но начиная с OS X 10.6 и iOS 3.1 вы можете обойти это с помощью ассоциативных ссылок .

Вы можете использовать ассоциативные ссылки для имитации добавленияПеременные экземпляра объекта в существующий класс.Используя ассоциативные ссылки, вы можете добавить хранилище к объекту без изменения объявления класса.Это делается через objc_setAssociatedObject и objc_getAssociatedObject.Если вы оберните эти вызовы в пользовательский метод получения и установки свойства, вы можете подделать ивар.

Посмотрите на этот пост Оле Бегеманн .

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