NSURLConnection

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     });

 

 

 

posted on 2015-06-19 21:07  BikeLoverChina  阅读(212)  评论(0编辑  收藏  举报

导航