Свойство требует определения метода
Я преобразовывал код из не-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
- единственный класс, который я знаю об этом.