2013-02-19 16 views
10

Ich habe einen Code von Nicht-ARC in ARC konvertiert und einige unnötige Aufrufe von @synthesize entfernt. Eine spezielle Klasse gestartet Warnungen für einige Eigenschaften Ausgabe:Eigenschaft erfordert zu definierende Methode

Class.h

@property (strong, nonatomic) NSString *xyz; 

aber beim Bau, erhalte ich die Warnung.

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

Ich dachte, dass Xcode 4.6 und und Standard von Apple LLVM Compiler 4.2, sollten die @properties Auto-synthetisiert werden.

Wie kann ich dem Compiler mitteilen, die Eigenschaft automatisch zu synthetisieren? Muss ich eine bestimmte Projektkonfiguration verwenden, um diese Warnung zu entfernen?

+0

Haben Sie bereits eine 'setXyz:' Methode? – rmaddy

Antwort

35

Ist diese Eigenschaft auf einer Unterklasse? deaktiviert Autosynthese genau, weil die meisten deklarierten Eigenschaften @dynamic erwartet werden.

Dies wird mit dem Makro NS_REQUIRES_PROPERTY_DEFINITIONS erreicht, das direkt vor dem @interface NSManagedObject platziert wird, der auf erweitert wird. Dies könnte auch für andere Klassen verwendet werden, aber ist die einzige Framework-Klasse, die ich kenne.

+0

In der Tat ist es! Das war das Problem, ich kannte diese Besonderheit nicht mit der 'NSManagedObject' Klasse. –

Verwandte Themen