Objective c 叮当声(在Xcode中):从-Weverything开始,手动禁用特定警告

Objective c 叮当声(在Xcode中):从-Weverything开始,手动禁用特定警告,objective-c,xcode,clang,Objective C,Xcode,Clang,我喜欢使用-Weverything让编译器捕捉所有可能的警告,但有时我会收到我不想修复的警告。如何在出现特定警告时手动禁用这些警告?您可以使用-Wno XYZ禁用单个警告,XYZ是要禁用的警告功能的名称。我猜您知道如何更新生成设置以启用/禁用单个警告,并希望在代码中禁用警告。以下是一个例子: #ifdef TESTFLIGHT_USERTRACKING #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdepre

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

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

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

#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
在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

我刚刚碰到一个网站,它列出了所有的叮当警告以及使用pragma-Clang-diagnostic-ignored禁用这些警告的标志-Wxyz:


当您访问它时,您会理解我为什么缩短了URL。

好的,但是您知道如何从Xcode中的黄色警告气泡中获得正确的XYZ吗?请将Xcode带回问题。这是它的一个重要部分:@7cows不,这不是一个真正的Xcode问题,你想设置编译器标志。嗯,有一本关于叮当的手册,列出了所有开关和选项,包括警告。给你:@7cows不要把xcode放回标签,这真的不是xcode的问题。另外,你不应该把答案放在问题中-这就是为什么我们有不同的答案帖子。我一直在寻找如何找到编译器警告特有的标志已经有一段时间了!谢谢你-非常有用!请注意,您的方法并不是处理事情的最佳方式: