30

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

4

4 回答 4

36

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

于 2013-05-05T12:35:28.347 回答
17

代码

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

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

/.../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
于 2013-09-22T14:55:18.093 回答
3

我刚刚碰到一个列出所有 Clang 警告和禁用它们的标志的站点(使用#pragma clang diagnostic ignored "-Wxyz"):

http://goo.gl/hwwIUa(当您访问它时,您会明白我为什么缩短了 URL)。

于 2014-10-02T16:47:47.503 回答
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
于 2013-05-05T18:29:15.723 回答