有人知道在什么情况下初始化NSURLConnection
会返回nil而不是创建的连接吗?文档说这是可能的,但没有具体说明什么时候会发生。
有问题的方法/消息:
[[NSURLConnection alloc] initWithRequest:request delegate:self];
-
根据NSURLConnection
类参考:
URL返回值:
请求的URL连接。如果无法初始化连接,则返回nil。
URL加载系统编程指南介绍了以下内容:
如果NSURLConnection无法为请求创建连接,则initWithRequest:
:返回nil。
-
虽然此方法可能返回nil,但我无法想出触发这种情况的场景。我尝试过以下几种场景:
具有空url的
URLRequest
:由于具有无效url的error.URLRequest
,具有空url的connection:didFailWithError:
委托方法被调用:具有不存在的url的error.URLRequest
,具有无效url的connection:didFailWithError:
委托方法被调用:具有不存在的url的error.URLRequest
:具有指定主机名的服务器无法找到。as错误。connection:didFailWithError:
委托方法,并显示“Internet connection似乎处于脱机状态”。as错误。
initWithRequest
方法在每个场景中都返回了一个有效的NSURLConnection
(除了最后一个场景),并调用了connection:didFailWithError:
,但出现了相应的错误。
有没有人知道哪种情况会导致返回nil?
发布于 2010-10-25 05:14:47
我相信这也可以在加载失败时使用,而不仅仅是初始化。(分配是单独完成的-这就是低内存可能会咬你的地方)所以(我猜)它可能会失败,因为你没有可用的网络(3G/Wifi),或者它只是无法连接到服务器。在任何情况下,请使用:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
才能得到实际的失败。
您可以在没有网络的情况下模拟这一情况-甚至给它一个糟糕的URL。
发布于 2010-10-28 23:42:59
我猜答案是“从不”。似乎NSURLConnection返回nil的唯一方法是在超级初始化时失败。(超级初始化返回nil)但是由于NSURLConnection的超类是NSObject和NSObjects init,所以只返回self (从不为nil)
PS:这是针对IOS SDK 4.0的,在模拟器上,可以在设备上有所不同。
发布于 2010-10-20 22:17:12
我会尝试以上所有的方法,除非是在内存不足的情况下。也就是说,我认为它会发生在内部malloc失败的时候。
https://stackoverflow.com/questions/3978020
复制相似问题