摆脱警告"表达结果未使用"

时间:2015-05-19 08:04:46

标签: ios objective-c

我有以下几行代码:

NSURL *url = [NSURL URLWithString:URL];
NSURLRequest* request = [NSURLRequest requestWithURL:url .... ];
NSURLConnection* connection = [NSURLConnection alloc];
[connection initWithRequest:request delegate:self];

在最后一行,我得到"表达结果未使用" 警告。现在,根据我在网上阅读的所有文章,这是调用方法的正确方法,建议语法下载URL异步。如何重写此代码以修复警告?

5 个答案:

答案 0 :(得分:10)

问题来自于方法NSURLRequest initWithRequest…返回一个你没有存储的对象。

如果你不需要它,你应该写:

(void)[connection initWithRequest:request delegate:self];

在Xcode上,您也可以使用限定符__unused来丢弃警告:

__unused [connection initWithRequest:request delegate:self];

通知编译器您故意忽略返回的值。

答案 1 :(得分:4)

您可以使用以下行:

SELECT ref,
       CASE WHEN PATINDEX('%[ ]A[0-9][0-9][0-9][0-9][0-9| ]%', ref) > 0
       OR PATINDEX('A[0-9][0-9][0-9][0-9][0-9| ]%', ref) = 1 THEN
           SUBSTRING(ref, PATINDEX('%A[0-9][0-9][0-9][0-9][0-9| ]%', ref), 6) 
       ELSE
           NULL
       END As ReceiptId 
FROM imp

而不是:

 [NSURLConnection connectionWithRequest:request delegate:self];

答案 2 :(得分:1)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-value"
NSURL *url = [NSURL URLWithString:URL];
NSURLRequest* request = [NSURLRequest requestWithURL:url .... ];
NSURLConnection* connection = [NSURLConnection alloc];
[connection initWithRequest:request delegate:self];
#pragma clang diagnostic pop

有关所有Clang警告的列表,您可以取消take a look here

答案 3 :(得分:1)

将最后两行替换为:

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

警告很有用,因为alloc可以返回与init不同的对象(例如,当您使用NSArray时,会使用class cluster pattern)。

在这种情况下,connection将引用alloc返回的此“中间”对象,而不是init返回的完全初始化的实例。

答案 4 :(得分:1)

只需将最后一行更改为:

connection = [connection initWithRequest:request delegate:self];