1

これと同様の質問があります: object = nil と [object release] の設定と [object release] と object = nil の設定の違いは何ですか?

NSMutableArray *myExampleArray = [[NSMutableArray alloc] init];
myExampleArray = nil;

私は iOS 5.0の自動参照カウントを使用しているため、実際にはオブジェクトを解放していません。nil に割り当てると [myExampleArray release] と同じですか?

後で myExampleArray を再初期化しないと使用できないことを知っています。それでは次の質問です。この NSArrayをクリアする最善の方法は何ですか?

4

2 に答える 2

7

はい、ARC 環境では release を呼び出すことはありません。したがって、変数に nil を割り当てると、オブジェクトが解放されます。

非 ARC 環境では、自分でリリースを行うため、オブジェクトが破棄されます。しかし、変数は依然として古いオブジェクト アドレスを指しています。しかし、オブジェクトはもうないので、EXC_BAD_ACCESS後で変数を使用すると、クラッシュ ( ) が発生する可能性があります。それに nil を割り当てても、それは起こりません。変数が古いオブジェクト アドレスを指しなくなるためです。

あなたの他の質問: 後で再び配列が必要な場合はremoveAllobjects、Ankit Gupta が既に言ったように、NSMutableArray を呼び出して、追加されたすべてのオブジェクトを削除できます。これにより、まだ生きている空の配列が生成されるため、再利用できます。

于 2012-04-19T08:18:42.717 に答える
3

オブジェクトに Nil を使用しないでください。 次の
行を試してください。

[myExampleArray removeAllobjects];
于 2012-04-19T07:51:21.993 に答える