iOSにおけるメモリ管理について
- iOSではガベージコレクションが使えない
- その代わりに参照カウンタ方式でメモリを管理する
ガベージコレクションが使えないのは驚きだった。
参照カウンタについて
- [インスタンス retain]で参照カウンタを1追加
- [インスタンス release]で参照カウンタを1減らす
- 参照カウンタが0になったら自動解放される。
- このときにdeallocメソッドがコールされる。
一時的に使う変数などは解放のし忘れなどが起こりがち、
そのために指定したタイミングでreleaseメッセージを送信してくれる自動解放プールという仕組みがある。
- NSAutoreleasePool *pool = [[NSAUtoreleasePool alloc] init]で自動解放プールを作る
- インスタンスに対してautorelase を実行する事で自動解放プールへ登録できる
- [pool drain]でプールへ登録されていたインスタンスに対してrelaseメッセージが送信される
0 件のコメント:
コメントを投稿