メソッドにパラメーターを渡した場合、メソッドの最後でパラメーターを解放する必要がありますか?
4 に答える
いいえ。NARCを考えてください:「新しい割り当て保持コピー」。これらのことを何もしていない場合は、リリースする必要はありません。
Cocoaメモリ管理ガイドラインをお読みください。次のルールはあなたの質問に関連しています:
名前が「alloc」または「new」で始まるメソッドまたは「copy」を含むメソッド(alloc、newObject、mutableCopyなど)を使用してオブジェクトを作成する場合、またはオブジェクトに保持メッセージを送信する場合は、オブジェクトの所有権を取得します。リリースまたは自動リリースを使用して、所有するオブジェクトの所有権を放棄するのはユーザーの責任です。オブジェクトを受け取ったときは、それを解放してはなりません。
明らかに、(メソッドで)パラメーターを作成してパラメーターを取得していません。したがって、心配する必要があるのは、メソッドにそれらを保持したかどうかだけです。そうした場合は、それらを解放または自動解放する必要があります。そうしなかった場合は、それらを解放または自動解放してはなりません。
retain
あなたがあなたの方法でそれらをするならば、あなたはそれらを解放する必要があるだけです。慣例では、呼び出し元は、引数として渡されたオブジェクトが少なくとも呼び出しがアクティブである限り存続することを確認する責任があります。
ファウンデーションオブジェクトを直接操作しているのでない限り、これまでにこれらすべてをARCに委任する必要があります。