我怎樣才能讓NSURLConnection從不同的線程調用它的委託方法,而不是主線程。我正在嘗試調度scheduleInRunLoop:forMode:但似乎沒有做我想做的事情。iOS,NSURLConnection:在不同線程上委託回調?
我必須下載一個大文件,它會頻繁地中斷主線程,以至於一些正在發生的渲染開始變得波濤洶涌。
NSURLRequest * request = [NSURLRequest requestWithURL:url];
NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
NSRunLoop * loop = [NSRunLoop currentRunLoop];
NSLog(@"loop mode: %@",[loop currentMode]);
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[connection start];
我沒有看到太多的其他東西是「模式」只有兩種模式記錄在案,所以沒有太多真正的測試。
任何想法?
感謝
不會保留隊列運行的線程嗎?所以,我這樣稱呼一次,線程一直存在。我再次調用這個函數,因爲GCD決定隊列運行的線程,然後可能還有另一個線程在等待......所以,一旦工作完成後線程無法正常工作,全球隊列?另外,你的意思是「如果你想保證你正在運行哪個線程,請將調用適當地替換爲dispatch_get_global_queue()。」?你如何通過GCD定位一個線程? – zumzum