Xcode 4警告 NSURLConnection“未使用表达式结果”

我只是尝试做我通常的数据传输。我定义我的 NSMutableURLRequest 然后调用

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

这在 Xcode 3中是可以的,但是 Xcode 4在这一行中警告我“ 表达式结果未使用”。 这个请求确实有效,但是我想找到一种方法来消除这个警告。

我假设我可以将连接存储在一个变量中,但是我并不真正需要它,而且我看不出在下一行中将其设置为 nil的意义(尽管这样会消除警告)

请注意: 我不能100% 确定它是 Xcode 4还是启用了 ARC。

18228 次浏览

应该有人为那个 NSURLConnection负责。它不需要存储连接,但是如果您这样做,编写代码会更好。问题是,在您创建了我们的 NSURLConnection之后,没有人拥有指向那个创建的实例的指针,这种情况本不应该发生。

让我们假设下面的例子:

  1. 您的 ClassA实例正在创建 NSURLConnection的实例
  2. 您的 ClassA实例正在被释放和释放
  3. NSURLConnection仍然存在,并将向释放的实例激发委托。

为了解决这个问题,您应该存储 NSURLConnection的实例,并且如果您的 ClassA实例被释放,那么应该释放该连接,这也会导致释放 NSURLConnection的实例。

当一个函数返回一个你不需要的结果时,你可以强制转换它为 void 来消除编译器的警告:

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

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

Program 的答案是正确的,但这里有一个更清晰的方法:

[NSURLConnection connectionWithRequest:request delegate:self];

这不会导致警告,即使您没有将结果释放为 void。