2014年2月20日木曜日

Xcodeプロジェクトで、他端末でheaderファイルのリンクなしエラーが発生した時の解決方法

Xcodeプロジェクトを他人と共有していると発生するかもしれない問題です。

Xcode > Build Settings の「Framework Search Paths」と「Library Search Paths」に追加されているパス名が絶対パスになっている事が原因である可能性が高いです。
解決方法は、2つの項目ともにダブルクリックして編集状態にし、絶対パスになっている箇所を以下のように修正していきます。

例)
/Users/hyoromo/project/iOS/TamaPinByun/TamaPinByun/libs/hoge
  ↓
$(SRCROOT)/TamaPinByun/libs/hoge

上記の方法が面倒くさくて一時的解決をお望みの場合、エラー発生端末側でエラーファイルを追加し直しすればビルド出来る状態になります。

2014年2月18日火曜日

Cocos2d-iphoneを使った際にGameCenterでクラッシュする問題について

Cocos2d-iphone 2.1 を使用しているアプリで、Game Centerを使って以下のフローを実施した際にクラッシュします。
  1. GKGameCenterViewController を表示(Leaderboardの表示)
  2. アプリをサスペンド状態にする
原因は Cococs2d-iphone のメインコントローラが CCDirector なので、Cocos2d-iphoneフレームワークの各所ではそれ前提で処理が記述されているから。
解決方法は以下のようになります。

AppController.m
-(void) applicationDidEnterBackground:(UIApplication*)application
{
    if([navController_ visibleViewController] == director_) {
        [director_ stopAnimation];
    } else {
        [navController_ dismissViewControllerAnimated:NO completion:nil];
        [director_ stopAnimation];
    }
}