Objective-C: переменная экземпляра в категории
Я просто спрашиваю, можно ли было добавить переменную экземпляра через категорию. Моя особая проблема заключается в том, что мне нужно добавить свойство NSIndexPath к объекту ASIHTTPRequest, но я не хочу подкласса ASIHTTPRequest в принципе.
У меня есть какая-нибудь альтернатива?
Спасибо за ваши ответы, Кристиан
1 ответ
Категория не может объявлять дополнительные переменные экземпляра, но начиная с OS X 10.6 и iOS 3.1 вы можете обойти это с ассоциативными ссылками.
Вы можете использовать ассоциативные ссылки для имитации добавления переменных экземпляра объекта в существующий класс. Используя ассоциативные ссылки, вы можете добавить хранилище к объекту без изменения объявления класса. Это делается через objc_setAssociatedObject
а также objc_getAssociatedObject
, Если вы поместите эти вызовы в пользовательский метод получения и установки свойства, вы можете подделать ivar.
Посмотрите на этот пост Ole Begemann.