有谁知道在初始化NSURLConnection
的情况下,返回nil而不是创建的连接。文档说它可能但是没有指定何时发生这种情况。
有问题的方法/讯息:
[[NSURLConnection alloc] initWithRequest:request delegate:self];
-
根据NSURLConnection
班级参考:
返回值:URL请求的URL连接。如果无法初始化连接,则返回nil。
URL加载系统编程指南说明如下:
如果NSURLConnection无法为请求创建连接,则initWithRequest:delegate:返回nil。
-
虽然这个方法可能会返回nil,但我无法想出触发此方法的场景。我尝试了以下方案:
URLRequest
使用空网址:connection:didFailWithError:
委托方法,并将“不支持的网址”视为错误。URLRequest
使用无效的网址:connection:didFailWithError:
委托方法,并将“错误的网址”视为错误。URLRequest
且不存在url:connection:didFailWithError:
委托方法被调用“无法找到具有指定主机名的服务器”。为错误。 connection:didFailWithError:
方法在每个方案中返回了一个有效的initWithRequest
(除了最后一个方案),并在NSURLConnection
中调用了相应的错误。
有没有人能够找出导致nil返回的场景?
答案 0 :(得分:1)
我相信当它无法加载时也可以使用它,而不仅仅是初始化。 ( alloc 是单独完成的 - 这就是低mem可能会咬你的地方)所以(我猜)它可能会失败,因为你没有可用的网络(3G / Wifi)或它只是失败连接到服务器。无论如何,请使用:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
要解决实际问题。
您可以在没有网络的情况下模拟这种情况 - 或者甚至给它一个错误的网址。
答案 1 :(得分:1)
我猜答案是“从不”。似乎NSURLConnection返回nil的唯一方法是在[super init]失败。 ([super init]返回nil)但是作为NSURLConnection的超类是NSObject和NSObjects init只返回self(从不为零)
PS:对于IOS SDK 4.0,在模拟器上,可以在设备上有所不同。
答案 2 :(得分:0)
除了在低内存条件下执行此操作外,我会尝试以上所有操作。 IE,我认为当内部malloc失败时会发生这种情况。
答案 3 :(得分:0)
如果您指定的请求包含错误或不是所有基本值
,则会导致这种情况答案 4 :(得分:0)
如果未在runLoop中创建NSURLConnection,则返回nil。