Arcを使ったら人生変わった話
- 2. 自己紹介
• @ykuroki
• Web/iOS開発
• 趣味
– アプリ開発・さんぽ
12年9月13日木曜日
- 3. 伝えたいこと
• メモリ管理の自動化でiOS開発も楽になっ
てきているということ
12年9月13日木曜日
- 4. アジェンダ
• Objective-Cのメモリ管理
• ARCとは
• ARCのルール
• ハマッた点
• まとめ
12年9月13日木曜日
- 5. Objective-Cのメモリ管理
• 「参照カウント」(Reference Counting)
• オブジェクトの生成から破棄までを管理
1 2 1 0 0
オブジェクトの生成して所有 オブジェクトの所有 オブジェクトの解放 参照されくなったので破棄
alloc retain release dealloc
12年9月13日木曜日
- 6. ARCとは
• Automatic Referense Counting
– 参照カウントを自動でやりますよってこと
• X-Code 4.2以降を使用する
• ファイル単位でARCの有効化、無効化で
きる
– ARC無効のライブラリをそのまま使える
12年9月13日木曜日
- 7. よくわからないコードが
retainしてオブ
ジェクト所有
dealloc時に所
有していたオ
ブジェクトも
解放
キモい
12年9月13日木曜日
- 8. なんということでしょう
代入することで自動
的に所有する
インスタンスは自
シュッとしている
動で破棄
12年9月13日木曜日
- 9. ARCのルール
• retain, releaseをタイプする必要がない
– 変数を代入するとretain
– スコープを抜けるとreleaseが自動的に行われ
る
• 明示的にdeallocを呼び出せない
– 非ARCのときに必須だった[super dealloc]が
エラーになる
– dealloc自体はあります
12年9月13日木曜日
- 10. ハマった点 自動解放されるため、呼び出したも
のがすでにdeallocされている可能性
がある。deallocされたオブジェクト
にアクセスするとアプリがクラッ
シュする
操作を加えると..
クラッシュ!
Subwindow Subwindow
12年9月13日木曜日
- 11. まとめ
• いいところ
– メモリ管理を気にしなくなる
– コードの記述量が減る
• 心配なところ
– autorelease/retain があるとエラーになる
– 既存モジュールが使えない可能性が高い
→ファイル単位でARCを無効にするなどの対応必要
12年9月13日木曜日