CVe*_*tex 7 xcode gcc warnings objective-c
我工作的一个项目有一个不强制执行警告的构建系统.
但我有一些代码需要警告才能工作.这是一个例子
NSString* title = @"";
if ([view respondsToSelector:@selector(title)]) {
title = [view title];
}
Run Code Online (Sandbox Code Playgroud)
在一些谷歌搜索之后,我尝试通过包装该代码区来禁用代码块的警告
#pragma warning disable
// my code
#pragma warning restore
Run Code Online (Sandbox Code Playgroud)
没工作:(
有人知道如何在Xcode中执行此操作吗?
任何帮助表示赞赏.
-简历
Ind*_*ore 11
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow-ivar"
// your code
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)
你可以在这里了解GCC pragma并获取警告的警告代码到Log Navigator(Command + 7),选择最顶层的构建,展开日志(右边的'='按钮),然后滚动到在底部,你的警告代码在这样的方括号内[-Wshadow-ivar]
编辑
对于铿锵你可以使用
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow-ivar"
// your code
#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)
您可以在这里做很多事情,但最简单的可能只是稍微重写您的代码。
NSString* title = @"";
if ([view respondsToSelector:@selector(title)]) {
title = [(id)view title];
}
Run Code Online (Sandbox Code Playgroud)
在发送消息之前将视图变量转换为 id 应该确保只要指定的方法-title存在于任何地方,它就会保持沉默。
另外一个选择:
NSString* title = @"";
if ([view respondsToSelector:@selector(title)]) {
title = [view performSelector:@selector(title)];
}
Run Code Online (Sandbox Code Playgroud)
这与上面的有点不同,因为它不需要文件“看到”任何名为 title 的方法;但它有点罗嗦。
编辑:我知道这些方法实际上都不会在任何时间内关闭警告,而是会抑制它们。
至少,如果做得正确的话,抑制通常比简单地忽视要好。
| 归档时间: |
|
| 查看次数: |
4757 次 |
| 最近记录: |