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

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

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

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

Ответы

Ответ 1

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

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

Посмотрите на сообщение Ole Begemann.