2013-02-19 7 views
10

Przekształcałem kod z nie-ARC w ARC i usuwam niepotrzebne wywołania funkcji @synthesize. Jeden specyficzny klasa rozpoczęła wydawanie ostrzeżeń dla niektórych właściwości:Właściwość wymaga metody, która zostanie zdefiniowana.

Class.h

@property (strong, nonatomic) NSString *xyz; 

ale podczas budowy, pojawia się ostrzeżenie.

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

Myślałem, że przy użyciu Xcode 4.6 oraz domyślne i kompilatora LLVM Jabłko 4.2 @properties powinno być auto-syntetyzowane.

Jak mogę powiedzieć kompilatorowi o automatycznej syntezie właściwości? Czy muszę usunąć konfigurację, aby usunąć to ostrzeżenie?

+0

Czy masz już metodę 'setXyz:'? – rmaddy

Odpowiedz

35

Czy ta właściwość dotyczy podklasy NSManagedObject? NSManagedObject wyłącza auto-syntezę właśnie dlatego, że większość deklarowanych właściwości ma być @dynamic.

Dokonuje się tego za pomocą makra NS_REQUIRES_PROPERTY_DEFINITIONS umieszczonego tuż przed @interface NSManagedObject, które rozwija się do __attribute__((objc_requires_property_definitions)). To może być używane również w innych klasach, ale jedyna klasa framework, którą znam, to robi.

+0

Rzeczywiście tak jest! To był problem, nie znałem tej szczególnej z klasy 'NSManagedObject'. –