クラス解放時のインスタンス変数の扱われ方 - 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 を代入しておくようにします。

[ Automatic Reference Counting 目次へ ]