クラス解放時のインスタンス変数の扱われ方 - Automatic Reference Counting
SPECIAL
クラス解放時のインスタンス変数の扱われ方
ARC (Automatic Reference Counting) を使用することで、これまで行っていた retain や release といったコーディングが不要になりました。
この ARC では、クラスインスタンスの解放時に呼び出される dealloc メソッドの効率化が図られていて、これまでは必須ながらもプログラマーが記さなければいけなかった [super dealloc] というコードを、最後に自動で実行してくれるようになりました。
ARC が関与するのはそればかりではなく、インスタンス変数の解放も併せて行われます。
このとき、制御レベルが __strong のインスタンス変数には自動的に nil が設定されるので、その後にそれを直接参照したとしても、アクセス違反になってしまうことが防げます。
iOS 4 向けにビルドした場合でもちゃんと nil が入るようでしたので、iOS 5 よりも前を対象としたプロジェクトでも安心です。
なお、制御レベルが __unsafe_unretained のインスタンス変数については、dealloc で終了した後も、無効になったインスタンスが残るので、必要であれば dealloc 内で自分で nil を代入しておくようにします。