0

だから私は強力なコレクション変数 x (NSMutableArray 型など) を持っています。

[x removeAllObjects]; 
[x release]; // not needed in ARC
x = nil; 
4

2 に答える 2

6

厳密に言えば、両者は同一ではありません。strong変数を に設定すると、nil実際にオブジェクトが解放されます。ただし、配列が破棄されるのremoveAllObjectsは、それが破棄される場合のみです。別の変数が配列への強い参照を保持している場合、その変数は存続し、含まれている項目は削除されません。

于 2012-06-04T16:03:21.413 に答える
1

はい、それはまさにそれがすることです。私がそれを考えるのが好きな方法は、非アトミックな保持プロパティのようなものですが、すべての変数に対して機能し、各割り当てが古い値を解放し、新しい値を割り当てます。したがって、x を nil に代入すると、古い値が解放されます。また、ARC がない場合と同様に、removeAllObjects は実際には必要ありません。NSArray のようなコンテナーを破棄すると、他のオブジェクトへのすべての参照が解放されるからです。

ARC についてよりよく理解するには、developer.apple.com で入手できる 2011 WWDC ビデオを見ることをお勧めします。

読むべきもう1つの良いリソースはこれですhttp://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/

于 2012-06-04T15:57:17.193 に答える