読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【cocos2d】Xcode5で新規cocos2dプロジェクトを一番簡単にARC対応にする方法

cocos2d Objective-C Xcode

以前、
【cocos2d】cocos2dプロジェクトをARC対応にする - 夏までにiPhone アプリつくってみっか!
でcocos2dプロジェクトのARC対応について書いたのですが、久々に新しいプロジェクトを作ってみると上手く行きませんでした。環境がXcode5に変わったのがが原因なのかどうなのかわかりませんが、今回はもっと簡単な方法でARC対応にしてみました。
途中リファクタリングに失敗したりいろいろと問題があったので、忘れないようにメモ代わりに記事を書いておきます。

1. cocos2dのプロジェクトをテンプレートから作成する。
cocos2dプロジェクトをテンプレートから作成します。
f:id:takujidev:20131130125945j:plain

2. TARGETのBuild Phasesタブ内のCompile Sourcesのプロジェクトフォルダー直下のファイルを上に寄せる
追記:テンプレートから作成した場合はこのステップからステップ4までを飛ばし、ステップ5.でリストから下記の4ファイルを探してチェックを付けてもOKです。(他のファイルにはリファクタリングで-fno-objc-arcフラグが自動的に付きます。)
既に自分で作成したファイルがたくさんあるプロジェクトをARCに変更する場合はチェック対象のファイルを探すのが大変なので、このステップでパスを見ながらプロジェクトフォルダー直下のファイルを探して一箇所にまとめるておく方が早いと思います。

テンプレートからプロジェクトを作成した場合は、AppDelegete.m, main.m, IntroLayer.m, HelloWorldLayer.mの4つのファイルをドラッグして一番上にまとめます。
自分で作成したソースファイルがあればそれも上に持って行きます。
f:id:takujidev:20131130130326j:plain

3. ステップ2.で寄せたファイル以外の全てのファイルを選択し、-fno-objc-arcコンパイラーフラグを指定する
ステップ2.で寄せた4つのファイル以外のファイルの中で一番上の物をクリック、一番下までスクロールして最後のファイルをシフトを押しながらクリックするとその間の物も全て選択されます。
その状態でダブルクリックかリターンキーを押すとコンパイラーフラグを入力するウィンドウが開くので-fno-objc-arcと入力します。
なお、下から選択を始めたり、選択後スクロールしたりするとウィンドウが開かないことがあるのでご注意!
f:id:takujidev:20131130131239j:plain

4. リファクタリングを実行
メニューからEdit->Refactor-> Convert to Objective-C ARC...を選択します。
f:id:takujidev:20131130131734j:plain
5. ステップ2.で選択したファイルにチェックマークを付けCheckをクリック
ステップ2.で選択した4つのファイルのチェックボックスにチェックマークを付けCheckをクリックします。
f:id:takujidev:20131130133111j:plain
おっとエラー!
Cannot Convert to Objective-C ARCと言われました。
Lipo Errorというエラーが表示されています。
f:id:takujidev:20131130132125j:plain
これはXcode左上で実機が選択されていると出るエラーらしいです。
なので、リファクタリングするときはシミュレーターを選択しておきます。
f:id:takujidev:20131130132433p:plain:w300
適当なシミュレーターを選択し再びConvert to Objective-C ARC...をすると・・・
f:id:takujidev:20131130132551j:plain
今度は上手く行ったようです。
Nextを押すと変更された部分が表示されるので、Saveをクリック、自動Snap ShotをEnableにするかどうか聞かれますので、したければEnableしたくなければDisableをクリックします。

6. 実行してプログラムが動作する事を確認
テンプレートから作成した直後のプロジェクトの場合はこのような画面が表示されるはずです。
f:id:takujidev:20131130132943p:plain