1日30分英語

習慣化するために

P137-157 ガーベジコレクション

ARCとは別に、ガーベジコレクションも用意されている。

  • コンパイラはccでもclangでも有効。
  • MacOS 10.5 Snow Leopard以降。iOSは対応していない。
  • 循環参照があっても問題なくメモリを解放してくれる。
  • __weak でゼロ化をする事もできる。
    • 循環参照が大丈夫なので、使わなければ行けない事はないが、これで解放しやすくできる(←?)
  • 解放時にfinalizeが実行されるので、ここで後処理を行える。が、注意点が多い。
    • finalize内で別のインスタンスの解放を考えない。
    • オブジェクトの代入に気をつける。レザレクション(←?)が起きて実行時エラーになる場合がある。
    • finalizeの実行順序は決まっていない。
    • スレッドセーフで。
  • 実行時の速度は手動のカウンタ管理方式、ARC、ガーベジコレクションで比較するとARCが最も早い。(コンパイル時に最適化した場合)

ざっと読んだ。ARCではなくガーベジコレクションを使うシチュエーションはどういうときなんだろうか。

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版