标签:
1.简单的网络请求可以用一个异步来实现
2.如果是复杂的网络请求,例如下载大量的数据并跟踪进度的话,这时就需要用到代理
3.如果在代理中开启的线程,则该线程不是在后台线程执行的,而是在主线程执行的
4.如果想要在后台线程执行,则需要用到GCD或NSOperation创建一个新的线程
5.为了保证代理的方法被监听到还要用到运行循环
因为默认的子线程的RunLoop是没有开启循环的,所以需要手动开启,在适当的时候还需要关闭循环,在这里一旦网络断开,runLoop 会自动停止
1 dispatch_async(dispatch_get_global_queue(0, 0), ^{ 2 3 NSString *urlString = @"http://localhost/01-Vim简单演练.mp4"; 4 urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 5 6 NSURL *url = [NSURL URLWithString:urlString]; 7 NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15.0f]; 8 #warning 注意下面这句话放的位置 9 // [[NSRunLoop currentRunLoop] run]; 10 [NSURLConnection connectionWithRequest:request delegate:self]; 11 // 启动runloop 死循环,好启动,不好关闭! 12 // NSURLConnection 一旦网络断开,runLoop 会自动停止 13 [[NSRunLoop currentRunLoop] run]; 14 NSLog(@"come here----%@",[NSThread currentThread]); 15 16 });
标签:
原文地址:http://www.cnblogs.com/iosBike/p/4589747.html