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