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