对于NSURLConnection,XCode 4警告“表达结果未使用”

时间:2011-10-27 11:06:51

标签: iphone objective-c ios xcode warnings

我只是想做我惯常的数据传输。我定义了我的NSMutableURLRequest,然后调用

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

以前这对Xcode 3来说还不错,但Xcode 4警告我该行上有“表达结果未使用”。 请求确实有效,但我想找到一种摆脱警告的方法。

我想我可以将连接存储在一个变量中,但我真的不需要它,我无法看到将它设置为nil下一行的意义(尽管这会删除警告)< / p>

请注意:如果是XCode 4或启用了ARC,我不能100%确定。

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:180)

当函数返回不需要的结果时,可以将其转换为void以消除编译器警告:

(void) [[NSURLConnection alloc] initWithRequest:request delegate:self];

我还没有使用ARC,所以我不能说这是不是一个好主意,在ARC之前你需要将这个指针结果放在某处,这样你才能释放它。

答案 1 :(得分:33)

progrmr的答案是正确的,但这是一种更清洁的方法:

[NSURLConnection connectionWithRequest:request delegate:self];

即使您没有将结果转换为无效,也不会引发警告。

答案 2 :(得分:3)

有人应对此NSURLConnection负责。不需要存储连接,但如果你这样做,则编码更好。问题是,在创建了NSURLConnection之后,没有人有一个指向该创建实例的指针,这不应该是这种情况。

我们假设以下示例:

  1. ClassA的实例正在创建NSURLConnection
  2. 的实例
  3. ClassA的实例正在发布并取消分配
  4. NSURLConnection仍处于活动状态,并会将代理人解雇给您已取消分配的实例。
  5. 要解决该问题,您应该存储NSURLConnection的实例,如果您的ClassA实例被解除分配,则应该释放该连接,这也会导致NSURLConnection的实例解除分配。