Я нашел объяснение, почему синтез свойств запрещен в категориях, но как вы можете использовать расширения класса вместо:
Следующая информация взята с http://www.friday.com/bbum/2009/09/11/class-extensions-explained/
"Причина, по которой синтез был запрещен в категориях, заключалась в том, что синтез требует хранения, и не было никакого способа объявить хранение в категории эффективно, и было неприемлемо разрешать категории синтезировать методы, которые затем приводили бы в действие классы класса ivars Слишком хрупкий и безобразный.
Однако было также очевидно желательно иметь возможность объявлять свойство, которое было доступно только для чтения, но реализация которого была перезаписана для целей внутреннего класса или структуры.
Одним дополнительным требованием является то, что при синтезе таких свойств всегда должна быть возможность синтезировать как сеттер, так и геттер естественно и точно. В частности, при объявлении свойства как атомарного, разработчик не может правильно написать вручную только половину пары установщика-получателя; инфраструктура блокировки не выставлена, и, таким образом, в такой ситуации невозможно гарантировать атомарность.
Расширения класса элегантно решили эту проблему.
В частности, вы можете объявить свойство как:
@interface MyClass : NSObject
@property(readonly) NSView *targetView;
@end
И, затем, в файле реализации:
@interface MyClass()
@property(readwrite) NSView *targetView;
@end
@implementation MyClass
@synthesize targetView;
@end
Конечный результат? Свойство, которое доступно только для чтения, но доступно для чтения частным образом без открытия свойств вплоть до всей забавной хрупкости, связанной с категориями. "