質問

以前はあります 役職 @synthesizeと@dynamicの違いについて。

@Dynamicの使用方法の観点から、Dynamicについて詳しく知りたいです。

通常、@dynamicとnsmanagedobjectを使用します

// Movie.h
@interface Movie : NSManagedObject {
}
@property (retain) NSString* title;
@end

// Movie.m
@implementation Movie
@dynamic title;
@end

実際、@dynamicの理解に応じて、コンパイラ時間中に生成されたゲッター/セッターはありません。したがって、独自のゲッター/セッターを実装する必要があります。

私の質問は、このnsmanagedObjectの場合、スーパークラスnsmanagedObjectにおけるゲッター/セッターの大まかな実装は何ですか?

上記の場合を除き、@dynamicを使用する他のいくつのケースはありますか?

ありがとう、

役に立ちましたか?

解決

@dynamic コンパイラが現在表示できない場合でも、アクセサに独自の実装を提供することを計画していることをコンパイラに示します。省略した場合 @dynamic 使用しないでください @synthesize, 、2つのことの1つが発生します。

  1. あなたが半分のアクセサを提供しただけなら(たとえば、セッターのないゲッターは readwrite プロパティ)、またはGCCを使用している場合、コンパイラが警告します。
  2. Clangを使用してコードをコンパイルする場合、適切なアクセサが自動的に生成されます。 (統合ごとに公式にはサポートされていません。)

@dynamic したがって、コンパイラが上記のいずれかを行わないようにするのに役立ちます。これは、ランタイム関数のように非常にダイナミックな方法でプロパティを実装する場合にも役立つかもしれませんが、それはめったに必要ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top