首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NSURLConnection的initWithRequest何时返回nil

NSURLConnection的initWithRequest何时返回nil
EN

Stack Overflow用户
提问于 2010-10-20 20:53:40
回答 5查看 5.1K关注 0票数 18

有人知道在什么情况下初始化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错误。
  • 有效的请求,但没有调用internet:connection:didFailWithError:委托方法,并显示“

Internet connection似乎处于脱机状态”。as错误。

  • nil请求:导致崩溃。

initWithRequest方法在每个场景中都返回了一个有效的NSURLConnection (除了最后一个场景),并调用了connection:didFailWithError:,但出现了相应的错误。

有没有人知道哪种情况会导致返回nil?

EN

回答 5

Stack Overflow用户

发布于 2010-10-25 05:14:47

我相信这也可以在加载失败时使用,而不仅仅是初始化。(分配是单独完成的-这就是低内存可能会咬你的地方)所以(我猜)它可能会失败,因为你没有可用的网络(3G/Wifi),或者它只是无法连接到服务器。在任何情况下,请使用:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

才能得到实际的失败。

您可以在没有网络的情况下模拟这一情况-甚至给它一个糟糕的URL。

票数 1
EN

Stack Overflow用户

发布于 2010-10-28 23:42:59

我猜答案是“从不”。似乎NSURLConnection返回nil的唯一方法是在超级初始化时失败。(超级初始化返回nil)但是由于NSURLConnection的超类是NSObject和NSObjects init,所以只返回self (从不为nil)

PS:这是针对IOS SDK 4.0的,在模拟器上,可以在设备上有所不同。

票数 1
EN

Stack Overflow用户

发布于 2010-10-20 22:17:12

我会尝试以上所有的方法,除非是在内存不足的情况下。也就是说,我认为它会发生在内部malloc失败的时候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3978020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档