「heckj」や「benzado」によって提供される回答の場合のように、ほとんどの場合、間違いを犯したり、それらを不完全に説明したりするため、メモリ管理の基本的なルールを繰り返すことは一般に役に立ちません...
メモリ管理の基本的なルールは、メモリ管理ルールの Apple のドキュメントに記載されています。
「www.stray-bits.com」からの回答に相応しい:「所有していない」メソッドから返されたオブジェクトが「自動解放」されていると述べることも、せいぜい誤解を招くものです。通常、何かが「自動解放」されているかどうかという観点から考える必要はありませんが、単にメモリ管理規則を考慮して、返されたオブジェクトを所有しているかどうかをそれらの規則に従って判断する必要があります。もしそうなら、あなたは所有権を放棄する必要があります...
1 つの反例 (自動解放されたオブジェクトの観点から考える) は、 などのメソッドに関連するパフォーマンスの問題を検討している場合ですstringWithFormat:
。通常(1)、これらのオブジェクトの有効期間を直接制御することはできないため、これらのオブジェクトは比較的長い間保持され、アプリケーションのメモリ フットプリントが不必要に増加する可能性があります。デスクトップではこれはほとんど影響しないかもしれませんが、より制約のあるプラットフォームでは重大な問題になる可能性があります。したがって、すべてのプラットフォームでalloc
/init
パターンを使用することがベスト プラクティスと見なされ、より制約の多いプラットフォームでは、可能であればオブジェクトの自動解放につながるメソッドを使用しないことを強くお勧めします。
(1) 独自のローカル自動解放プールを使用して制御できます。詳細については、Apple の Memory Management Programming Guideを参照してください。