12

コードを非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

Xcode4.6とデフォルトのAppleLLVMコンパイラ4.2を使用すると、@propertiesを自動合成する必要があると思いました。

プロパティを自動合成するようにコンパイラに指示するにはどうすればよいですか?この警告を削除するには、特定のプロジェクト構成を使用する必要がありますか?

4

1 に答える 1

38

このプロパティはNSManagedObjectサブクラスにありますか?NSManagedObjectほとんどの宣言されたプロパティはであると予想されるため、自動合成を無効にします@dynamic

これは、のNS_REQUIRES_PROPERTY_DEFINITIONS直前に配置されたマクロを使用して実行されます。このマクロ@interface NSManagedObjectはに展開され__attribute__((objc_requires_property_definitions))ます。これは他のクラスでも使用できますが、NSManagedObject私が知っている唯一のフレームワーククラスです。

于 2013-02-19T18:03:14.810 に答える