Я хочу использовать категорию для создания метода на исходном классе доступным как свойство также.
Класс A:
@interface ClassA
- (NSString*)foo;
@end
Категория Class A
@interface ClassA (Properties)
- (void)someCategoryMethod;
@property (nonatomic, readonly) NSString *foo;
@end
Теперь, когда я делаю это, это, кажется, работает (РЕДАКТИРОВАНИЕ: Возможно, это не работает, это не жалуется, но я вижу странность), но это дает мне предупреждения, потому что я не синтезирую свойство в своей реализации категории. Как я говорю компилятору, что все на самом деле очень хорошо, так как исходный класс синтезирует свойство для меня?
Вот предупреждение, которое вы получаете:
предупреждение: свойство 'foo' требует определения метода '-foo' - используйте @synthesize, @dynamic или укажите метод реализация
Чтобы подавить это предупреждение, укажите в своей реализации следующее:
@dynamic foo;
Если что-то объявлено в интерфейсе вашей категории, это определение принадлежит реализации вашей категории.