2011/08/03

メモリ管理の基本ルール in objective-C

AppleのMemory Management Programming Guideを読んで大事なところをメモ。


メモリ管理の基本ルール

メモリ管理とは、オブジェクトの所有権の管理
  • 自分で作ったオブジェクトは自分のもの。
    • "alloc", "new", "newObject", "copy", "mutableCopy"とかで始まる名前のメソッドで作る。
  • "retain"を使ってオブジェクトの所有権を得る。
    • 受け取ったオブジェクトは受け取ったそのメソッド内では有効なことが保証され、そのメソッドも安全にオブジェクトを返してくれるはず。
    • "retain"を使う二つのケース
      1. accessor methodの実装、または'init'メソッドの実行
      2. 必要なオブジェクトが他の操作で無効化されないために。
  • 必要なくなったら、オブジェクトの所有権を捨てる。
    • "release"または"autorelease"で所有権を捨てられる。
    • Cocoaではオブジェクトの所有権を捨てることをオブジェクトを"release"するという。
  • 自分のものでないオブジェクトの所有権は捨ててはいけない。


Cocoaのルールに沿ってコードを書かないと後で困る事になる、というお話。