[[iPhoneプログラミング一覧]] *目次 [#hb5c0ca3] #contents *Warningに"format not a string literal and no format arguments"と出る [#y1ec5cc5] NSErrorからlocalizedDescriptionを呼び出して、それをNSLog(LOGマクロ)に投げると、 ワーニングに次のような文章が出る。 LOG([NSError localizedDescription]); format not a string literal and no format arguments 下記のようにするとwarning出ません。 LOG((@"%@",[NSError localizedDescription]); 同様に printf(@"%",[message UTF8String]); だとワーニングが出ますが、 printf(@"%",[message UTF8String]); だとでませんが、今度は、 Passing arguments 1 of というワーニングがでてきます。 *implicit declaration of function [#o94d2e53] プロトタイプ宣言がない!というお叱りです。 関数呼び出しの前に関数を書くか、プロトタイプ宣言を記述しましょう。 *iPhone SDK3でビルドするとコンパイルエラーする [#wdca7e54] http://tech.gowest.co.jp/?p=77 iPhone SDK 3でターゲットを「Simulator – 3.0|Debug」にしてビルドすると(プロジェクト名)_Prefix.pchファイルで以下のようなエラーが出ることがある。 error: syntax error before ‘AT_NAME’ token error: syntax error before ‘}’ token fatal error: method definition not in @implementation context 原因はコンパイラーのバージョンによってiPhone OS 3.0用実行ファイルのコンパイルができないようである。 回避方法は以下の通り。 -1 XCodeのメニュー「プロジェクト」-「プロジェクト設定を編集」を選択する。 -2 一番上のタブの「ビルド」を選択する。 -3 「コンパイラのバージョン」項目を選択する。 -4 「C/C++コンパイラのバージョン」の値を「GCC 4.0」にする。 -5 「C/C++コンパイラのバージョン」が選択されている状態でウィンドウの左下隅にある歯車アイコンをクリックし、「ビルド設定条件を追加」メニューを選択する。 -6 新しいエントリーが追加されるので一番左の項目をクリックし、「Device – iPhone 3.0」を選択する。そして一番右の項目をクリックし「GCC 4.2」を選択する。 -7 もう一度5,6の作業をくりかえし、左の項目「Simulator – iPhone3.0」を選択し右の項目「GCC 4.2」を選択する。 *fatal error: method definition not in @implementation context – macosx.com [#s89593f7] 「method definition not in @implementation」とか出るんだけど意味がわかりません。 -→循環参照じゃね? -→id使えば解決さ -→お前ら、idで誤魔化さずにちゃんと型つけて返せよ。。。