XCodeでコンパイラの警告をエラーとして扱う方法や、警告を一時的に無効にする方法について解説します。
通常はコンパイラ警告(Warning)が発生しても、警告を無視してプログラムの実行が可能です。しかし、コンパイラ警告を無視すると思わぬバグにつながるため、できる限りコンパイラ警告が出ないように開発するべきです。
コンパイラ警告がエラーとなるように設定すると、警告の発生でプログラムが実行できなくなります。そのため、コンパイル警告を無視することがなくなり、警告に正しく対応しながら開発できます。
XCode3でコンパイラ警告をエラーとして扱うには、ビルド設定「警告をエラーと見なす」をONに設定します。
まず、「グループツリー > ターゲット > プロジェクト名 > 右クリック > 情報を見る」と操作し、プロジェクトの情報画面を表示します。
プロジェクトの情報画面の上部タブで「ビルド」を選択し、一覧で「警告をエラーと見なす」設定を見つけて、チェックボックスをONにします。
ビルド設定は項目が多いので、キーワード検索で絞り込むと見つけやすくなります。検索バーで「error」と入力すると、「警告をエラーと見なす」設定が簡単に見つかります。
XCode4でコンパイラ警告をエラーとして扱うには、ビルド設定「Treat Warnings as Errors」をYESに設定します。
まず、「プロジェクト・ナビゲーター > プロジェクト名 > TARGETS:プロジェクト名 > Build Settings」と操作し、ビルド設定を表示します。次に、ビルド設定で「Treat Warnings as Errors」設定を見つけて、YESに設定します。
ビルド設定は項目が多いので、キーワード検索で絞り込むと見つけやすくなります。検索バーで「error」と入力すると、「Treat Warnings as Errors」設定が簡単に見つかります。
開発を行なっていると、コンパイラ警告の内容を理解した上で、警告をピンポイントで無視したい場合があります。そのような場合は、プラグマ(pragma)を利用して警告を一時的に無効にできます。
ソースコードに「#pragma GCC diagnostic ignored "(警告タイプ)"」と記述することで、特定の警告を無効にできます。「#pragma GCC diagnostic warning "(警告タイプ)"」と記述すると、警告が再び有効になります。
「(警告タイプ)」には操作したい警告に対応する文字列を指定します。例えば以下の様な文字列があります。
なお、関数の中に上記プラグマは記述できません。関数の外に記述して利用します。
#pragma GCC diagnostic ignored "-Wunused-variable"
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- ( void )loadView
{
[ super loadView ];
UIView * testView = [ [ [ UIView alloc ] initWithFrame:self.view.bounds ] autorelease ];
testView.backgroundColor = [ UIColor orangeColor ];
[ self.view addSubview:testView ];
UIButton * testButton = [ UIButton buttonWithType:UIButtonTypeRoundedRect ];
testButton.frame = CGRectMake( 10, 10, 100, 40 );
[ testButton setTitle:@"TEST" forState:UIControlStateNormal ];
// -Wdeprecated-declarationsで推奨されない関数の警告が抑止される
testButton.titleShadowOffset = CGSizeMake( 1, 1 );
[ self.view addSubview:testButton ];
// -Wunused-variableで未使用変数の警告が抑止される
int sampleValue = 1;
return;
}
// 警告設定を元に戻す
#pragma GCC diagnostic warning "-Wunused-variable"
#pragma GCC diagnostic warning "-Wdeprecated-declarations"
なお、-Wunused-variableなどの文字列は、XCodeのビルド設定画面の説明文で確認することができます。