Xcode 4.2では、Objective-Cの新しいバージョンが搭載されています。このバージョンでは、「
Automatic Reference Counting(
ARC)」という新しい機能が追加されています。
この
ARCというのは、平たく言えば「オブジェクトを作ったり消したりといった管理を勝手にやってくれる機能」です。先に、main関数内に用意されていたものについて、「オブジェクトの管理をするためのものだ」といいましたね。以前は、そうやってプログラマが自分でオブジェクトを管理する必要があったのです。
ところが最新の
ARCにより、こうした管理は不要となったのです。何も考えずにオブジェクトを作って使えばいいようになったのですね。逆に、従来のようなオブジェクトを管理するような機能を呼び出すと、エラーになるように変わったのです。
Xcode 4.2を使っている場合、main関数にある以下の2文を先ほどコメントアウトしました。
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
[pool drain];
これらのオブジェクトを管理するための処理を削除することで、問題なく動くようになりました。自動的にオブジェクトを管理する仕組みがあるのですから、手動でオブジェクトを管理する機能を使おうとすると、「あんたがやっちゃだめ!」となってしまうわけです。
■旧バージョンのプロジェクトを動かすには?
この
ARCは、大変便利な機能ですが、これのおかげで、旧バージョンのプロジェクトは、オブジェクト管理の部分を書き換えないと動かなくなってしまいました。これは、旧バージョンのプロジェクトを利用する必要がある場合はかえって面倒ですね。そこで、
ARCをOFFにして、旧バージョンのプロジェクトをそのまま動くようにするための設定を紹介しておきましょう。
左側のプロジェクトのファイルが改装表示されているところで、プロジェクトのアイコン(青い書類アイコン)を選んでください。これで、プロジェクトの設定がエディータエリアに現れます。この左側にある「
TARGET」というところの項目を選択し、一覧から以下の2つを探してください。
・「Apple LLVM Compiler 3.0 - Language」にある「
Objective-C Automatic Reference Counting」を「
NO」にしてください。
・「Apple LLVM Compiler 3.0 - Warnings」にある「
Objective-C Automatic Reference Counting ABI inCompatibilities」を「
Yes」にしてください。
これでOKです。プロジェクトを再度ビルドし実行すれば、
ARCがOFFになり、問題なく動くようになります。
また、最初からARCを利用しないでプロジェクトを作成するのであれば、オプションの設定の際に「
Use Automatic Reference Counting」のチェックをOFFにしておいてください。これで
ARCを使わず、従来の方式(プログラマが自分でオブジェクトを管理するやり方)でプログラミングできるようになります。