2

私はObjective-Cの開発から始めて、弱い参照と強い参照を理解しようとしています。理解できたと思いますが、よくわかりません...

そのコードを考えてみましょう:

@interface SomeClass {} 
@property (nonatomic, weak) NSString* propertyName;
@end

ここで、コードのどこかで次のようなものを呼び出すと、次のようになります。

NSString* s = someClassInstance.propertyName;

参照カウンターはインクリメントされません。私の理解は正しいですか?

  • 疑問1:の参照カウンター値はpropertyName何ですか?

  • 疑問2:それで...このプロパティへの強い参照をいつ取得できるかの例を挙げていただけますか?私が何を意味するのか、私が何を理解していないのかをあなたが知っていることを願っています...

弱参照を取得します。

4

2 に答える 2

6

propertyName「弱い」プロパティとして宣言することは、2つのことを意味します。

  1. オブジェクトをに割り当てるとpropertyName、そのオブジェクトの参照カウントは増加しません。

  2. propertyNameを指すオブジェクトの割り当てが解除propertyNameされると、はに設定されnilます。

の値propertyNameを別の変数に割り当てると、参照カウントに影響する場合と影響しない場合があります。それをプロパティに割り当てると、strongほぼ確実にrefcountが増加します(これはstrongプロパティのセマンティクスの一部であるため)。ただし、最終的には、コンパイラが参照カウントの変更が必要かどうかを判断します。

ARCを使用しているかどうかに関係なく、Objective-Cのオブジェクト所有権の概念を理解することは重要ですが、特定の時点での特定のオブジェクトの実際の参照カウントの詳細はそれほど有用ではありません。これを覚えておいてください:strongプロパティはオブジェクトを所有しています。weakプロパティはそうではありません。

于 2013-03-06T17:05:28.000 に答える
0

まず、ARC対応アプリケーションでは、「strong」は「retain」の同義語であり、「weak」は「assign」の同義語です。

疑問1への回答:その保持カウントは、格納しているオブジェクトの保持カウントと等しくなります。これは単なる参照です。

疑い2への答え

あなたの疑問に答えてください:

強いタイプと弱いタイプのプロパティを理解するには、このリンクを参照してください

http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1

于 2013-03-06T17:08:22.490 に答える