Спасибо за продолжение - это действительно возможный способ обойти эту проблему.
гда думал, что нельзя объявить свойство объекта в категории. Пока мой партнер не сделал это в коде нашего приложения, и это, казалось, работало.
Я пошел на SO и Google, чтобы попытаться объяснить ему, что нет, категории Objective C могут использоваться только для добавления методов, но не свойств. Я нашел такие вопросы, как:
Установка нового свойства в реализации интерфейса категории (посмотрите на принятый ответ)Могу ли я добавить свойство для метода, не входящего в мою категорию?Но потом я нашелэта ссылка на сайте Apple, который содержит следующую информацию об объявлении @property:
Объявление свойства начинается с ключевого слова @property. @property может появиться где угодно в списке объявлений метода, найденном в @interface класса. @свойствоможет также появиться в объявлении протокола или категории, (выделение добавлено)
Я знаю, что это не работает:
@interface MyClass ()
NSInteger foobar;
- (void) someCategorizedMethod;
@end
Но это компилируется:
@interface MyClass ()
@property NSInteger foobar;
- (void) someCategorizedMethod;
@end
Мой вопрос (а), какова лучшая практика здесь? и (b) является ли это чем-то новым для Objective-C 2.0, и вместо того, чтобы использовать «реальный» iVar, он просто использует ассоциативное хранилище за кулисами, чтобы заставить это работать?