Спасибо за продолжение - это действительно возможный способ обойти эту проблему.

гда думал, что нельзя объявить свойство объекта в категории. Пока мой партнер не сделал это в коде нашего приложения, и это, казалось, работало.

Я пошел на 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, он просто использует ассоциативное хранилище за кулисами, чтобы заставить это работать?

Ответы на вопрос(1)

Ваш ответ на вопрос