[解決済み】Objective-Cで宣言された@property属性(非原子、コピー、strong、weak)。
質問
各属性をどのような場合に使用するのか、どなたか詳しく教えてください。
nonatomic
,
copy
,
strong
,
weak
といったように、宣言されたプロパティに対して、それぞれが何をするのか説明してください。また、何らかの例もあれば最高です。私はARCを使用しています。
どのように解決するのですか?
非原子
Nonatomic
意志
ない
スレッドセーフなルーチンを生成するスルー
@synthesize
アクセサーを使用します。
atomic
はスレッドセーフアクセサを生成するので
atomic
変数がスレッドセーフになる (複数のスレッドからデータを破損することなくアクセスできる)。
コピー
copy
は、オブジェクトがミュータブルである場合に必要です。この瞬間のオブジェクトの値が必要で、そのオブジェクトの他の所有者による変更をその値に反映させたくない場合に、これを使用します。コピーを保持しているため、そのオブジェクトを使い終わったら解放する必要があります。
アサイン
Assign
とはやや逆で
copy
. のゲッターを呼び出すと
assign
プロパティは、実際のデータへの参照を返します。一般的にこの属性は、プリミティブ型(float, int, BOOL...)のプロパティがある場合に使用します。
保持する
retain
は、属性がヒープ上に確保された参照カウントオブジェクトへのポインタである場合に必要となります。割り当ては次のようなものであるべきです。
NSObject* obj = [[NSObject alloc] init]; // ref counted var
で生成されたセッターは
@synthesize
は、オブジェクトがコピーされたときに参照カウントを追加し、元のコピーがスコープ外に出たときに基礎となるオブジェクトが自動破壊されないようにします。
オブジェクトを使い終わったら、そのオブジェクトを解放する必要があります。
@property
を使用しています。
retain
は参照カウントを増やし、自動解放プールのメモリを占有してしまいます。
強い
strong
は、Objective-C の自動参照カウント (ARC) の一部として、retain 属性の代わりとなるものです。ARC以外のコードでは、retainの同義語にすぎません。
について学ぶには良いサイトです。
strong
と
weak
をiOS 5に対応させました。
http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
<強い 弱い
weak
は
strong
そのオブジェクトのオーナーになるわけではなく、単にそのオブジェクトへの参照を保持するだけです。オブジェクトの参照カウントが 0 になると、たとえここでまだそのオブジェクトを指していたとしても、メモリから解放されることになります。
上記リンク先には 弱いものと強いもの
関連
-
[解決済み] objcの "pi "と "M_PI "の違いは何ですか?
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] クラスメソッドとインスタンスメソッドの違いは何ですか?
-
[解決済み】Objective-C ARC: strong vs retainとweak vs assign
-
[解決済み】新しい自動リファレンスカウント機構はどのように機能するのですか?
-
[解決済み】Objective-Cのstrongとweakの違い。
-
[解決済み】プロジェクトをARC使用に変換する場合、「switch case is in protected scope」はどういう意味ですか?
-
[解決済み] [Objective-Cの@propertyのretain, assign, copy, nonatomicについて。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] arc4randomとarc4random_uniformの違いは何ですか?重複
-
非静的宣言に続く "****"の静的宣言
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み】iOS 7で非推奨のsizeWithFont:の代わりになるものは?
-
[解決済み】セマンティックな問題。プロパティの合成ゲッターは、「所有する」オブジェクトを返すためのCocoa命名規則に従っている。
-
[解決済み】UITableViewからセパレータラインを削除する方法はありますか?
-
[解決済み] registerForRemoteNotificationTypes: は iOS 8.0 以降でサポートされていません。
-
[解決済み] [Solved] UITableViewがReloadDataを完了したことを伝えるには?
-
[解決済み] Nonatomic "とはどういう意味ですか?
-
[解決済み] ObjectiveCの変数位置の宣言・定義?