「Objective-C」カテゴリーアーカイブ

Cocos2d-x vs Cocos2d+Apportable


Cocos2d-xは、iPhone、Android、コンシューマゲーム機、PC、Macなど数多くのデバイスに対応した、ゲーム開発フレームワークです。それに対して、Cocos2dは、iPhone, iPad, Macに特化したフレームワークです。今後のマルチデバイス対応を考えると、Cocos2d-xを使うべきなのかなと思い、それぞれを軽くつかってみたのですが、Cocos2d-xではプロジェクトのビルドにかかる時間が長かったり、開発言語がC++であったりと(Objective-Cやcの経験はそれなりにありますが、C++は10年近くブランクがあります)、あまり効率的に開発できそうにありませんでした。対してCocos2dは、慣れ親しんでいるObjective-cを使え、ビルドも早く(簡単なプロジェクトであれば数秒で動きました)SpriteBuilderとの連携も快適で、かなり好印象でした。Androidがメインであれば、Cocos2d-xの方が良さそうですが、iPhoneをメインに開発し、それがAndroidでも動けばよい。といった感じの開発になりそうなので、Cocos2d-xより、Cocos2d+Apportableでの開発が良さそうです。

以下のチュートリアルをやってみましたが、1週間ではなく、1時間で動くところまで作れました。すごくよいチュートリアルでしたよ!
[1: インストール] cocos2d-iPhoneとSpriteBuilderでゲームを1週間で作ろう

undeclared selector警告を取り除く


プロトコルやヘッダ宣言されていないセレクターを使おうとするとUndeclared selectorの警告がでます。これを防ぐには、プロトコルやヘッダで宣言すればよいのですが、面倒だったりそうすることが相応しくない場合もあります。そういった場合には、@selector(someMethod)の代わりに、sel_registerName(“someMethod”)と記述すると、警告が発生しないようになります。ただし、この方法を使うと、実行時までセレクタ名があっているか検証されなくなるので、誤植や、呼び出し間違いの危険性がありますのでご注意ください。

SEL sel1 = @selector(someMethod);
SEL sel2 = sel_registerName("someMethod"); //@"someMethod"ではなく、"someMethod"

stackoverflow: How to get rid of the ‘undeclared selector’ warning

iOS Developer Library: Objective-C Runtime Reference