0
在CocoaXMLParser类苹果CocoaXMLParser例如,出现以下代码:运行循环和线程在苹果的CocoaXMLParser例如
rssConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
[self performSelectorOnMainThread:@selector(downloadStarted) withObject:nil waitUntilDone:NO];
if (rssConnection != nil) {
do {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
} while (!done);
}
按照NSRunLoop文档“在一般情况下,你的应用程序并不需要或者创建或者显式管理NSRunLoop对象,每个NSThread对象(包括应用程序的主线程)都有一个NSRunLoop对象,根据需要自动为它创建。在此情况下,为什么在此示例中显式管理运行循环?它是否不会由NSURLConnection请求生成的线程自动创建和销毁?
谢谢,你是说,在调用connectionDidFinishLoading方法之前,线程(在本例中为NSURLConnection)可能会终止? – RunLoop 2009-11-21 18:15:36
的确,事实上我在现实生活中碰到过这个确切的问题 - 你打开一个有效的连接,然后connectionDidFinishLoading永远不会被调用......也不是像didReceiveData这样的其他方法。在这种情况下,您尝试加载的后台线程在URL连接之前终止甚至可以执行任何操作。 – 2009-11-22 04:54:35