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

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

【cocos2d, Objective-C】Cocos2でARCを使う。ハマりましたー!

cocos2dを使って早速iPhone用オリジナルゲームのテストプログラムを作ろうとしたところ、早速ハマってしまいました。

 

cocos2dを使用するアプリでARCを使用可能にする方法はいくつかあるようですが、

Learn Cocos2d 2: Game Development for Iosの著者がお勧めする方法はスタティックライブラリーを使用する方法。スタティックライブラリーが何かという事はさておき

、早速本に書かれているとおりに実践し、iOS6.1シミュレーターで動かしてみるとばっちり動きます。ちなみにこのやり方は著者のサイトに書かれていますで、興味がのある方は試してみてください。

そして、念のためiOS5.0シミュレーターでも動かしてみると、クラッシュ!

dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic

というエラーログが残っています。

何だこれは!という事で検索してみると、先ほどのサイトにヒット。コメント欄に解決策が載っていました!

If one tries to run it under 5.0 or 5.1 it will crash
and it will show the following fatal error

dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic

To fix this one needs to change 1 setting.

Select the project -> Under Targets Select cocos2d-library -> Under Build Settings find “iOS Deployment Target” by default this is set to iOS 6.0 -> Change it to iOS 5.0

どうやら一つ設定を変えればいいようです。助かったー!

TARGETSからスタティックライブラリとして追加したcocos2d-libraryを選択し、Build Settingsタブの中のiOS Deployment TargetをiOS5.0に修正。

プログラムを実行するとシミュレーター画面にHello Worldの文字が。

こんなにうれしいHello Worldは見た事がありません。

 

しかし、いざiPhone実機で動かそうとすると今度は別の問題が!

cocos2d-library was rejected as an implicit dependency for ‘libcocos2d-library.a’ because its architectures ‘armv7′ didn’t contain all required architectures ‘armv7 armv7s’

というエラーメッセージが表示され、止まってしまいます。

そして、この問題もコメント欄にヒントが書かれており無事解決しました。

解決方法は次の通りです。

TARGETSからcocos2d-libraryを選択、Build SettingsのBuild Active Architecture Onlyの中のDebugの項目がYesになっていたのでこれをNoに変更。

iPhone上でアプリを実行する事ができました!

 

これでようやくプログラミングをはじめられます。