だから私は強力なコレクション変数 x (NSMutableArray 型など) を持っています。
[x removeAllObjects];
[x release]; // not needed in ARC
x = nil;
だから私は強力なコレクション変数 x (NSMutableArray 型など) を持っています。
[x removeAllObjects];
[x release]; // not needed in ARC
x = nil;
厳密に言えば、両者は同一ではありません。strong
変数を に設定すると、nil
実際にオブジェクトが解放されます。ただし、配列が破棄されるのremoveAllObjects
は、それが破棄される場合のみです。別の変数が配列への強い参照を保持している場合、その変数は存続し、含まれている項目は削除されません。
はい、それはまさにそれがすることです。私がそれを考えるのが好きな方法は、非アトミックな保持プロパティのようなものですが、すべての変数に対して機能し、各割り当てが古い値を解放し、新しい値を割り当てます。したがって、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/