有没有办法抑制Xcode中的警告?
例如,我调用一个未记录的方法,因为该方法不在标题中,我在编译时收到警告.我知道我可以将它添加到我的标题中以停止警告,但我想知道除了将其添加到标题之外是否有其他方法(所以我可以保持标题清洁和标准)来抑制警告?一个pragma或什么?
要基于每个文件禁用警告,使用Xcode 3和llvm-gcc-4.2可以使用:
#pragma GCC diagnostic ignored "-Wwarning-flag"
警告名称是一些gcc警告标志.
这将覆盖命令行上的任何警告标志.但它并不适用于所有警告.在CFLAGS中添加-fdiagnostics-show-option,您可以看到可以使用哪个标志来禁用该警告.
有一种更简单的方法可以抑制未使用的变量警告:
#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 pragma并获取警告的警告代码到Log Navigator(Command + 7),选择最顶层的构建,展开日志(右边的'='按钮),然后滚动到在底部,你的警告代码在这样的方括号内[-Wshadow-ivar]
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wshadow-ivar" // your code #pragma clang diagnostic pop
为了压制单个文件的警告,请执行以下操作:
在xcode项目中选择文件.按下获取信息转到带有构建选项的页面输入-Wno-以取消警告:
-Wno-
例如
-Wno未使用的参数
如果查看项目设置,可以获取警告的名称,查看位于构建选项卡页面底部的GCC警告,通过单击每个警告,它将告诉您警告参数名称:
例如
除了声明之外,每当函数参数未使用时发出警告.[GCC_WARN_UNUSED_PARAMETER,-Wunused-parameter]
要消除警告:尝试为相关对象创建类别界面
@interface NSTheClass (MyUndocumentedMethodsForNSTheClass) -(id)theUndocumentedMethod; @end ... @implementation myClass : mySuperclass -(void) myMethod { ... [theObject theUndocumentedMethod]; ... }
顺便说一句,我强烈建议不要在发货代码中调用未记录的方法.界面可以而且会改变,这将是你的错.