2011-01-27 10 views

答えて

2

もう1つの例は、オブジェクトをコレクションから削除してから操作する必要がある場合です。コレクションはオブジェクトを保持しているため、オブジェクトが削除されたときにメッセージに-releaseメッセージを送信する必要があります。したがって、コレクションからオブジェクトを削除して使用しようとすると、そのオブジェクトがすでに割り当て解除されていないという保証はありません。

この場合、オブジェクトをコレクションに残している間にオブジェクトに-retainを送信して、オブジェクトを削除した後でも有効であることを保証する必要があります。

1

一般的に言えば、必要な場合はオブジェクトを保持します。

+0

そして、あなたが最初にそれを割り当てなかったとき。 – user210504

+0

これはあまりにも一般的すぎて、質問に対する良い答えではありません。 –

2

initメソッドまたはcopyメソッドを使用してオブジェクトを作成すると、オブジェクトの保持カウントが1になるため、オブジェクトを保持する必要はありませんが、解放する必要があります。

NSArrayまたはNSDictionaryのようなコレクションに格納する場合、コレクションはそのコレクションを保持し、オブジェクトを削除するときにコレクションを解放します。しかし、まだオブジェクトを所有しているので、解放する必要があります。あなたがそれを保管した後にリリースするのは合理的です。

それ以外の場合は、おそらく自動リリースされたオブジェクトを取得している可能性があります。現在の実行ループの繰り返しを超えて使用することを望む場合は、そのオブジェクトを保持することをお勧めします。

関連する問題