Objective-C: переменная экземпляра в категории

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

У меня есть какая-нибудь альтернатива?

Спасибо за ваши ответы, Кристиан

1 ответ

Решение

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

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

Посмотрите на этот пост Ole Begemann.

Другие вопросы по тегам