まず、最も単純なケース:オブジェクトを保持する必要があるのはどのような状況ですか?
インスタンスにオブジェクトが必要な場合は、retainプロパティを作成します。それは今私の心に唯一の良い例です。
retainプロパティの設定者のほかに、オブジェクトを保持したい場合がありますか?
まず、最も単純なケース:オブジェクトを保持する必要があるのはどのような状況ですか?
インスタンスにオブジェクトが必要な場合は、retainプロパティを作成します。それは今私の心に唯一の良い例です。
retainプロパティの設定者のほかに、オブジェクトを保持したい場合がありますか?
もう1つの例は、オブジェクトをコレクションから削除してから操作する必要がある場合です。コレクションはオブジェクトを保持しているため、オブジェクトが削除されたときにメッセージに-release
メッセージを送信する必要があります。したがって、コレクションからオブジェクトを削除して使用しようとすると、そのオブジェクトがすでに割り当て解除されていないという保証はありません。
この場合、オブジェクトをコレクションに残している間にオブジェクトに-retain
を送信して、オブジェクトを削除した後でも有効であることを保証する必要があります。
一般的に言えば、必要な場合はオブジェクトを保持します。
initメソッドまたはcopyメソッドを使用してオブジェクトを作成すると、オブジェクトの保持カウントが1になるため、オブジェクトを保持する必要はありませんが、解放する必要があります。
NSArrayまたはNSDictionaryのようなコレクションに格納する場合、コレクションはそのコレクションを保持し、オブジェクトを削除するときにコレクションを解放します。しかし、まだオブジェクトを所有しているので、解放する必要があります。あなたがそれを保管した後にリリースするのは合理的です。
それ以外の場合は、おそらく自動リリースされたオブジェクトを取得している可能性があります。現在の実行ループの繰り返しを超えて使用することを望む場合は、そのオブジェクトを保持することをお勧めします。
そして、あなたが最初にそれを割り当てなかったとき。 – user210504
これはあまりにも一般的すぎて、質問に対する良い答えではありません。 –