メモリ管理
メモリ管理は、オブジェクトのライフサイクルを管理し、それらがもはや不要になったときにそれらを解放する、プログラミング分野です。オブジェクトメモリの管理は、パフォーマンスの問題です。アプリが、不要なオブジェクトを自由にしなければ、そのメモリの足跡は大きくなり、パフォーマンスが低下します。ガベージコレクションを使用していない Cocoa アプリでのメモリ管理は、参照カウンタのモデルに基づいています。オブジェクトを作成したり、コピーすると、その保持カウント(retain count) は1になります。その後、他のオブジェクトがあなたのオブジェクトを持ちたいと言う意欲を表明すると、その保持カウントを増分します。また、オブジェクトの所有者は、その所有欲を放棄すると、保持カウントを減少させます。保持カウントがゼロになったときは、オブジェクトは割り当てが解除され(破壊され)ます。
メモリ管理を支援するため、Objective-C は、一連のルールに準拠して使用しなければならないメソッドと仕組みを提供します。
注意:OS X では、明示的にメモリを管理したり、Objective-C のガベージコレクション機能を使用できます。iOS では、ガベージコレクションを利用できません。
メモリ管理の規則
時には 所有ポリシー と呼ばれるメモリ管理の規則は、明示的に Objective-C のコードでメモリを管理するのに役立ちます。
関連するメソッド:alloc、allocWithZone:copy、copyWithZone:、mutableCopy、mutableCopyWithZone:
関連するメソッド:retain
関連するメソッド:release、autorelease
プログラム内の他の場所からどこでもオブジェクトを受け取った場合、受け取った所ではメソッド内あるいは関数内で有効なままと保障されます。それがその範囲を超えて有効なままにしたい場合は、それを保持するか、コピーする必要があります。既に割り当てが解除されているオブジェクトを解放しようとすると、プログラムはクラッシュします。
メモリ管理の側面
以下の概念を理解する事は、適切にオブジェクトメモリの管理をするのに欠かせません。
前提条件の記事
関連記事
既出の議論
高度なメモリ管理プログラミングガイド
次の章
前の章