誰でもこの行の意味を私に説明できますか?あなたの助けのための@property(非原子、代入)id <IconDownloaderDelegate>デリゲート;
@property (nonatomic, assign) id <IconDownloaderDelegate> delegate;
Thxを、
ステファン
誰でもこの行の意味を私に説明できますか?あなたの助けのための@property(非原子、代入)id <IconDownloaderDelegate>デリゲート;
@property (nonatomic, assign) id <IconDownloaderDelegate> delegate;
Thxを、
ステファン
ビル:
あなたがプロパティを作成するとき、あなたは自動的に@synthesize
ディレクティブでgetterメソッドとsetterメソッドを作成することができます。コンパイラは、二つの方法
- (id) delegate;
- (void) setDelegate: (id) newDelegate;
を作成するだけでなく、同時に(本質的ロック)でプロパティを変更することから、複数のスレッドを防ぐために、この周囲に余分なコードを置くだけでなく。 nonatomic
は、コードがスレッドセーフである必要がないことをコンパイラーに通知します。これは、コードが少なく、パフォーマンスが向上することを意味します。 retain
と、コンパイラによって作成された
セッターはこのようなものになります。
- (void) setDelegate: (id) newDelegate {
if (delegate != newDelegate) {
[delegate release];
delegate = [newDelegate retain];
}
}
を、あなたのクラスのdealloc
方法で保持性質を解放する必要がある理由です。一般的なアドバイスは、あなたのデリゲートを保持しないことですので
は、あなたの代わりにretain
のassign
を使用し、セッターは次のようになります。
- (void) setDelegate: (id) newDelegate {
if (delegate != newDelegate) {
delegate = newDelegate;
}
}
の割り当ては、単にint型のxのような割り当てである:私はそれは私が「割り当て」のキーワードを参照してください最初の時間です(、非アトミック保持)を参照するために使用します= yはメモリ管理なし(retainと同様)。