我想在后台线程中运行一个下载,以不阻止iOS上的主UI线程,我所做的就是用创建一个新的线程
[NSThread detachNewThreadSelector:@selector(startDownload) toTarget:downloadObject withObject:nil];
然后将下面的代码在后台线程上运行:
NSURL* urlForCalendar = [NSURL URLWithString:@"http://www.apple.com/"];
urlRequest = [NSURLRequest requestWithURL:urlForCalendar];
urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:NO];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
[urlConnection scheduleInRunLoop:runLoop forMode:NSRunLoopCommonModes];
[urlConnection start];
但是,委托回调不会被调用。
编辑:对于任何人谁可能会遇到类似的问题,在未来,后位试图弄清楚为什么它不工作,我没有运行循环。 所以代码的最后3行实际上应该是:
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
[urlConnection scheduleInRunLoop:runLoop forMode:NSRunLoopCommonModes];
[urlConnection start];
[runLoop run];