2011年10月8日土曜日

iOS, Objective-Cにおけるメモリ管理


iOSにおけるメモリ管理について
  • iOSではガベージコレクションが使えない
  • その代わりに参照カウンタ方式でメモリを管理する
ガベージコレクションが使えないのは驚きだった。

参照カウンタについて
  • [インスタンス retain]で参照カウンタを1追加
  • [インスタンス release]で参照カウンタを1減らす
  • 参照カウンタが0になったら自動解放される。
  • このときにdeallocメソッドがコールされる。

一時的に使う変数などは解放のし忘れなどが起こりがち、
そのために指定したタイミングでreleaseメッセージを送信してくれる自動解放プールという仕組みがある。
  • NSAutoreleasePool *pool = [[NSAUtoreleasePool alloc] init]で自動解放プールを作る
  • インスタンスに対してautorelase を実行する事で自動解放プールへ登録できる
  • [pool drain]でプールへ登録されていたインスタンスに対してrelaseメッセージが送信される

0 件のコメント:

コメントを投稿