避免在块中使用“表达结果未使用”警告

时间:2012-01-21 12:28:29

标签: warnings clang objective-c-blocks

以下代码在块中的赋值操作上返回表达式未使用警告。代码不是很实用,但在排除部分中有更多代码,并且代码必须在特定队列上运行。

__block NSNumber *pageId=nil;
dispatch_sync(_myDispatchQueue, ^{
    int val;
    //... code generates an int and puts it in val
    pageId = [NSNumber numberWithInt:val];
}];
//pageId used below

如何摆脱此错误?

2 个答案:

答案 0 :(得分:47)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-value"
 pageId = [NSNumber numberWithInt:val];
#pragma clang diagnostic pop

答案 1 :(得分:2)

我的实验结果

注意我从Intrubidus那里得到了这个,但是我想要更多的信息,所以在试验之后我在这里为下一个人记录了我的发现。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-value"
pageId = [NSNumber numberWithInt:val];
#pragma clang diagnostic pop

仅适用于区间忽略和弹出区域。 “-Wunused-value”不会抑制未使用的变量。



这就是抑制未使用的变量的方法

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
int i = 0;
#pragma clang diagnostic pop



此外,没有推送和弹出,如下所示:

#pragma clang diagnostic ignored "-Wunused-value"
pageId = [NSNumber numberWithInt:val];

#pragma后,该文件中的任何位置都会忽略警告类型。这似乎只适用于相关文件。

希望你发现这很有用,
- 追逐