1

私が知りたかったのは、オブジェクトが Objective-C の配列または辞書に追加された場合、オブジェクトの保持カウントが増加するかどうかです。特定のオブジェクトを配列またはディクショナリに追加した直後に解放できますか?

4

3 に答える 3

6

はい、追加したオブジェクトの保持カウントが増加します。そのため、オブジェクトを配列に追加した直後にオブジェクトを解放できます。

NSObject obj1;
obj1=[[NSObject alloc] init];
//obj1's retain count is 1 here.

[array1 addobject:obj1];
//obj1's retain count incremented by 1, so the total retain count is 2.

[obj1 release];
//obj1's retain count decremented by 1, so the total retain count is 1.

array1array1 自体が解放されない限り、オブジェクトを保持します。

于 2011-04-14T10:58:39.547 に答える
4

ハリプラサード、

NS[ここにコレクション名] は、NSResponder が指摘したように、追加されたオブジェクトを保持します。その他のいくつかの事実:

  1. 「追加後にリリースできますか」というコメントに対して、短い答えは「はい」です。多くの場合 autorelease、コレクション内に含まれるようにバインドされていて、コレクションの外では必要ないオブジェクトに対して for を実行します。
  2. コレクションからオブジェクトを削除すると、参照カウントが減少します。メモリから削除されないようにしたい場合 (次のプール スイープ)、オブジェクトを保持する必要があります。
于 2011-04-14T10:59:36.247 に答える
2

NSArray は、それらに追加されたすべてのオブジェクトを保持します。

于 2011-04-14T10:50:05.117 に答える