Ответ 1
Категория не может объявлять дополнительные переменные экземпляра, но с OS X 10.6 и iOS 3.1 вы можете обойти это с помощью ассоциативных ссылок.
Вы можете использовать ассоциативные ссылки для имитации добавления переменных экземпляра объекта в существующий класс. Используя ассоциативные ссылки, вы можете добавить хранилище в объект без изменения объявления класса. Это делается через objc_setAssociatedObject
и objc_getAssociatedObject
. Если вы переносите эти вызовы в пользовательский getter и setter свойств, вы можете подделать ivar.
Посмотрите на сообщение Ole Begemann.