iOS5から導入されたAutomatic Reference Counting (ARC)について


いまさらAutomatic Reference Counting (ARC)というものを知りました。

というわけで、参考リンク集。

まずは基本を学ぶ

このふたつ、非常に良くまとまっていて、必要な情報は一通り書かれています。すばらしい。

こちらも入門的なエントリーですが、注目すべきは@implementation以下にインスタンス変数を定義する部分です。
外から参照しないものはこうやって定義するのが一番楽ですね。

従来のプロジェクトをARCに置き換える

プロジェクトの設定で「Objective-C Automatic Reference Counting」をYESにするとARC対応のプロジェクトになります。
その後ビルドをするとautorelease、release、retain、[super dealloc]など使っている箇所が軒並みコンパイルエラーとなります。

自分で書いたソースは修正すべきですが、外から引っ張ってきたものについては以下の記事が参考になります。

alloc/initした変数を戻り値として返すには

これまではautoreleaseして返すのが常識でしたが、ARCについてはそのまま返せばOKみたいです。

singletonの実装方法を変えよう

こちらのAppleの記事を参考にsingletonの実装をしていた場合、release/retainのオーバーライドやメモリゾーンの使用などでARCの利用をしたときからコンパイルエラーになるはずです。

まぁARC向けに書き換えることも可能だとは思いますが、非常にcoolな実装方法があります。

GCDのdispatch_once()を使う方法です。
この関数は、アプリケーション起動後一度だけ実行されるブロックを設定出来ます。
GCDの機能だけあってスレッドセーフなのも良いですね。

最新の仕様変更

Xcode 4.2まではassignだったのが、4.3からstrongになったそうです。
strongの方が利用機会は圧倒的に多いでしょうし、それが省略可能になるのは嬉しい・・・のですが、既存のコードの確認がめんど(ry

Leave a Comment