2012-09-20 11 views
25

に取り組んでいない合成、私はこの自動@propertyは昨夜iOS6のためのXcode 4.5の最新バージョンにアップデートした後NSManagedObjectのサブクラス

のような警告とエラーを取得するプロパティ「mapAnnotationは」であると方法「mapAnnotation」を必要とし を定義した - 私はそれらを使用する場合が見つからないため@synthesizeステートメント、および未知アイバーズについても、エラーのため、@synthesizeを使用@dynamicか、このクラスの実装

にメソッドの実装を提供します。

私は、マウンテンライオンでリリースされた4.5への最後のXcodeアップデート以降、これらの@synthesizeステートメントを書く必要はないと思っていました。私はそれがリリース・ノートでさえまだだ )当時、私のファイルから@synthesizeステートメントの全体の束を削除した:

プロパティを使用する際のObjective-C @synthesizeコマンドは、デフォルトで生成されます。

私は混乱していますが、自動的に@synthesize世代を自動生成する新しいプロジェクト設定がありませんか?

が、私は新しいプロジェクトを作成し、私は同じ問題に直面し、その理由と解決策を見つけた

+0

私はまったく同じ問題を抱えています。それはnsmanagedobjectで動作していないようです。 – Devfly

+0

私も!誰でもまだ修正が見つかりましたか? – Marky

+1

@Devfly、私はこれを最初に認識しませんでしたが、あなたが正しいです、それはちょうどNSManagedObjectとそのサブクラスで動作しないようです。 – MeXx

答えて

35

それをしようとすると、それも働いていません。

iOS 6 SDKのNSManagedObjectのヘッダファイルを見ると、クラスで強制的に@dynamicまたは@synthesizeを指定する "NS_REQUIRES_PROPERTY_DEFINITIONS"が表示されます。

(あなたは、iOS 5.1とiOS 6.0の間でAPIの差分でNS_REQUIRES_PROPERTY_DEFINITIONSを見ることができます。)

これは、コンパイラは、プロパティが動的になりたいかの実装では、特に合成されたかどうかを知る必要があるため、 NSManagedObjectクラスのサブクラスです。

NSManagedObjectサブクラスで@dynamic以外のプロパティに対して明示的に@synthesize行を追加するだけで、この問題を解決できます。

+3

私はリンゴの開発サポートから回答を受けました。これは基本的にあなたが言ったことです: "DNAnnotationはプロパティの自動合成に制限を課すNSManagedObjectの子孫です。NSManagedObjectは、そのサブクラスで定義されたすべてのプロパティを明示的に合成する必要がありますmapAnnotationプロパティに適切な(at)合成または(at)動的ステートメントを追加する必要があります。 – MeXx

+0

また、ヘッダファイルにNS_REQUIRES_PROPERTY_DEFINITIONSが含まれていないCMMotionManagerでも発生します... – cfischer

関連する問題