2013-02-19 14 views
10

コードを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とデフォルトのApple LLVMコンパイラ4.2を使って、@propertiesを自動合成する必要があると思っていました。

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

+0

すでに 'setXyz:'メソッドがありますか? – rmaddy

答えて

35

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

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

+0

確かにそれです!それが問題でした、私は 'NSManagedObject'クラスでこの特殊性を知らなかった。 –

関連する問題