Clang(在Xcode中):从-Weverything开始并手动禁用特定警告

时间:2013-05-05 12:28:34

标签: objective-c xcode clang

我喜欢使用-Weverything来编译器捕获所有可能的警告,但有时我会收到警告,我不想修复。如何在发生这些特定警告时手动禁用它们?

4 个答案:

答案 0 :(得分:30)

您可以使用-Wno-XYZ禁用个别警告,XYZ是要禁用的警告功能的名称。

答案 1 :(得分:16)

XCode

在XCode 5中,我必须构建,然后右键单击某个问题并选择“在日志中显示”,然后将“中间窗格”选项卡设置为“全部”,以便在日志中显示问题。

然后点击右边的“汉堡”图标并向下滚动我终于得到了警告的确切描述。

/.../SettingsViewController.m:91:58: warning: creating selector for nonexistent method 'setSegueIdentifier:' [-Wselector]
    [segue.destinationViewController performSelector:@selector(setSegueIdentifier:)

所以在我的情况下,以下工作就完成了。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wselector"
...
#pragma clang diagnostic pop

答案 2 :(得分:4)

我刚刚进入一个网站,其中列出了所有Clang警告和禁用它们的标志(使用#pragma clang diagnostic ignored "-Wxyz"):

http://goo.gl/hwwIUa(当您访问它时,您就会理解为什么我缩短了网址。)

答案 3 :(得分:1)

我猜你知道如何更新构建设置以启用/禁用单个警告,并希望在代码中禁用警告。这是一个例子:

#ifdef TESTFLIGHT_USERTRACKING

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#pragma clang diagnostic ignored "-Wdeprecated-implementations"

[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];

#pragma clang diagnostic pop

#endif