トップ 一覧 置換 検索 ヘルプ RSS ログイン

Objective-C のメモリ管理の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
http://www.remus.dti.ne.jp/~yoshiki/cocoa/ed1/12/index.html
http://www.geocities.jp/osx_makuri/learningcocoa.html
http://idlysphere.blog66.fc2.com/blog-entry-120.html

!基本
*alloc したオブジェクトは release しなければならない
*autorelease したオブジェクトは参照カウンタが 0 になると、イベントサイクルの最後で release される
 (関数の戻り値として autorelease したオブジェクトが返される場合、呼び出し元のスコープ内ではそのオブジェクトの生存が保証されているらしい)
*retain したオブジェクトは release しなければならない
*allocで始まる名前のメソッド以外が返す戻り値はreleaseしてはならない(≒autoreleaseされている)

!おまけ
http://d.hatena.ne.jp/KishikawaKatsumi/20090520/1242748402
 UIImage#imageNamed:は読み込みも描画もUIImage#imageWithContentsOfFile:やそれ以外のメソッドより5〜6倍速い
 だけど、
 UIImage#imageNamed:はクラッシュするまで画像をキャッシュし続けるみたい

なので、明確に確保と解放をするなら
 UIImage#initWithContentsOfFile を使って、 release を行う
{{category2 プログラミング言語,Objective-C}}