回答:
ファイルごとに警告を無効にするには、Xcode 3とllvm-gcc-4.2を使用して、次のコマンドを使用できます。
#pragma GCC diagnostic ignored "-Wwarning-flag"
ここで、警告名はgcc警告フラグです。
これは、コマンドラインの警告フラグを上書きします。ただし、すべての警告が表示されるわけではありません。CFLAGSに-fdiagnostics-show-optionを追加すると、その警告を無効にするために使用できるフラグを確認できます。
#pragma GCC diagnostic ignored "-Wwarning-flag"
すでに削除されているようです
未使用の変数の警告を抑制する簡単な方法があります。
#pragma unused(varname)
編集:ソース:http : //www.cocoadev.com/index.pl?XCodePragmas
更新:新しいソリューション、より堅牢なソリューションに遭遇しました
User-Defined
:検索(見つからない場合は作成)キー:にGCC_WARN_UNUSED_VARIABLE
設定しNO
ます。EDIT-2の例:
BOOL ok = YES;
NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);
コンパイラは、の未使用の変数警告を表示しok
ます。
解決:
BOOL ok = YES;
#pragma unused(ok)
NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);
PS:他の警告を設定/リセットすることもできます
GCC_WARN_ABOUT_RETURN_TYPE
::YES/NO
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow-ivar"
// your code
#pragma GCC diagnostic pop
ここでGCCプラグマについて学び、警告の警告コードを取得するには、レポートナビゲーター(Command + 9)に移動し、一番上のビルドを選択し、ログを展開し(右側の「=」ボタン)、スクロールして下とそこにあなたの警告コードはこのような角括弧内にあります[-Wshadow-ivar]
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow-ivar"
// your code
#pragma clang diagnostic pop
個々のファイルの警告を抑制するには、次のようにします。
xcodeプロジェクトでファイルを選択します。get infoを押して、ビルドオプションのページに移動し、-Wno-と入力して警告を無効にします。
-いいえ-
例えば
-Wno-unused-parameter
プロジェクトの設定を確認すると、ビルドタブページの下部にあるGCC警告を見て警告の名前を取得できます。各警告をクリックすると、警告パラメーター名が表示されます。
例えば
関数パラメーターが宣言とは別に使用されていない場合は常に警告します。[GCC_WARN_UNUSED_PARAMETER、-Wunused-parameter]
...m:45:69: Incompatible pointer types sending...
ビルドの説明を開いてこの警告を見つけます:ファイル[-Wincompatible-pointer-types]
名を変更して-Wno-incompatible-pointer-types
フラグとして.m
ファイルに追加しました...これ以上警告は表示されません... +10 if私はできました
Objective-Cでは、いくつかの重大なエラーが警告としてのみ表示されます。だけでなく、私ない決して無効に警告、私は通常、「エラーとして扱う警告」をオン(-Werror)。
コード内のすべてのタイプの警告は、物事を正しく(通常はオブジェクトを正しいタイプにキャストすることにより)、または必要なときにプロトタイプを宣言することにより回避できます。
警告を取り除くには、問題のオブジェクトのカテゴリインターフェイスを作成してみてください
@interface NSTheClass (MyUndocumentedMethodsForNSTheClass)
-(id)theUndocumentedMethod;
@end
...
@implementation myClass : mySuperclass
-(void) myMethod {
...
[theObject theUndocumentedMethod];
...
}
余談ですが、コードの出荷時にドキュメント化されていないメソッドを呼び出さないことを強くお勧めします。インターフェースは変化する可能性があり、変化します。それはあなたの責任です。
http://nshipster.com/pragma/#inhibiting-warnings-警告を禁止するセクションにスキップ
'Undocumented.h'という新しい個別のヘッダーファイルを作成し、プロジェクトに追加します。次に、ドキュメント化されていない関数を呼び出すクラスごとに1つのインターフェイスブロックを作成し、それぞれに「(ドキュメント化されていない)」のカテゴリを割り当てます。次に、その1つのヘッダーファイルをPCHに含めます。このように、元のヘッダーファイルはクリーンなままで、維持するファイルは1つだけです。PCHの1行をコメントアウトして、すべての警告を再度有効にすることができます。
このメソッドは、「(Depreciated)」のカテゴリを持つ「Depreciated.h」の減価償却関数にも使用します。
最良の部分は、個々のプロトタイプをコメント化またはコメント解除することにより、個々の警告を選択的に有効化/無効化できることです。
その特定の警告を抑制することは安全ではありません。コンパイラーは、引数のタイプを知っている必要があり、正しいコードを生成するためにメソッドに戻ります。
たとえば、次のようなメソッドを呼び出している場合
[foo doSomethingWithFloat:1.0];
これは浮動小数点数を受け取り、プロトタイプが表示されない場合、コンパイラーはメソッドが浮動小数点数ではなくdoubleを受け取ると推測します。これにより、クラッシュが発生し、値が正しく解釈されない可能性があります。上記の例では、Intelマシンのようなリトルエンディアンマシンでは、レシーバーメソッドは1ではなく0を渡します。
理由はi386 ABI docsで読むか、警告を修正するだけです。:-)
BOOL ok = [[NSCalendar currentCalendar] rangeOfUnit:NSMonthCalendarUnit startDate:&d interval:NULL forDate:self]; NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);