Свойство требует определения метода

Я преобразовывал код из не-ARC в ARC и удалял ненужные вызовы @synthesize. Один конкретный класс начал выдавать предупреждения для некоторых свойств:

Class.h

@property (strong, nonatomic) NSString *xyz;

но при создании я получаю предупреждение.

Property 'xyz' requires method 'xyz'to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation

Я подумал, что с использованием Xcode 4.6 и компилятора 4.2 LLVM Apple по умолчанию, @properties должны быть автоматически синтезированы.

Как сообщить компилятору автосинтезировать свойство? Должен ли я использовать конкретную конфигурацию проекта для удаления этого предупреждения?

Ответ 1

Является ли это свойство в подклассе NSManagedObject? NSManagedObject отключает автосинтез именно потому, что ожидается, что большинство объявленных свойств будут @dynamic.

Это выполняется с помощью макроса NS_REQUIRES_PROPERTY_DEFINITIONS, расположенного непосредственно перед @interface NSManagedObject, который расширяется до __attribute__((objc_requires_property_definitions)). Это также можно использовать и для других классов, но NSManagedObject - единственный класс, который я знаю об этом.