我看到有时加载 URL 失败的情况,但它失败得非常“严重”。当主机无法访问(即 VPN 未连接)时,似乎+[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:]
经常挂起以下回溯:
(gdb) bt
#0 in mach_msg_trap ()
#1 in mach_msg ()
#2 in __CFRunLoopServiceMachPort ()
#3 in __CFRunLoopRun ()
#4 in CFRunLoopRunSpecific ()
#5 in +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] ()
#6 in -[NSThread main] ()
#7 in __NSThread__main__ ()
#8 in _pthread_start ()
#9 in thread_start ()
我已经实现- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
了,但它永远不会被调用。
我正在构建 NSURLRequest 如下:
NSURLRequest *theRequest =
[NSURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:5.0];
所以我假设请求应该在 5 秒后超时,而不是无限期地挂起。这没有发生。
我应该注意到这发生在 Mac OS X 的控制台应用程序中(它是 iOS 库的测试框架)。我想知道运行循环配置是否发生了“奇怪”的事情。(从跟踪来看,它可能正试图从它正在运行的运行循环中启动一个新的运行循环?!)
有任何想法吗?
编辑:由于这不是 Cocoa 应用程序,我不得不手动运行运行循环。这似乎是问题的一部分。