IOS网络之同步与异步加载数据详解
2013-11-20 17:36
465 查看
同步与异步的表面现象上来看,区别是数据传输会不会阻塞UI。
而实际上,同步加载数据就是在主线程中进行数据加载。
而异步加载数据就是在非主线程中加载数据。
-------------------------------
鉴于用户的网络状况可能会有很多不可预知的状况,所以一般情况下都是使用异步加载,这样不会使用户在网络情况较差的情况下面对一个很长的空白期。
---------同步加载----------
NSURLResponse* response=nil;
NSError* error=nil;
NSData* data=[NSURLConnection sendSynchronusRequest:request returningResponse:&response error:&error];(sendSynchronusRequest:发送同步请求)
(比较明显的特点是:同步是没有代理方法的。)
或者:
NSURL* url=[NSURL URLWithString:[NSURL urlWithString:@"www.baidu.com"]]
NSData* data=[NSData dataWithContensOfURL:url];
(凡是使用dataWithContensOfURL的都是同步方法,因为这句话定义在主线程中,主线程会阻塞等待这句话完成。如果开辟一个子线程去执行它,就不会有租塞现象。)
--------异步加载---------
NSURLConnection* request=[[NSURLRequest alloc]initWithURL:[NSURL urlWithString:@"www.baidu.com"]];
[NSURLConnection connectionWithRequest:request delegate:self];
(这里将自身设为代理对象)
而实际上,同步加载数据就是在主线程中进行数据加载。
而异步加载数据就是在非主线程中加载数据。
-------------------------------
鉴于用户的网络状况可能会有很多不可预知的状况,所以一般情况下都是使用异步加载,这样不会使用户在网络情况较差的情况下面对一个很长的空白期。
---------同步加载----------
NSURLResponse* response=nil;
NSError* error=nil;
NSData* data=[NSURLConnection sendSynchronusRequest:request returningResponse:&response error:&error];(sendSynchronusRequest:发送同步请求)
(比较明显的特点是:同步是没有代理方法的。)
或者:
NSURL* url=[NSURL URLWithString:[NSURL urlWithString:@"www.baidu.com"]]
NSData* data=[NSData dataWithContensOfURL:url];
(凡是使用dataWithContensOfURL的都是同步方法,因为这句话定义在主线程中,主线程会阻塞等待这句话完成。如果开辟一个子线程去执行它,就不会有租塞现象。)
--------异步加载---------
NSURLConnection* request=[[NSURLRequest alloc]initWithURL:[NSURL urlWithString:@"www.baidu.com"]];
[NSURLConnection connectionWithRequest:request delegate:self];
(这里将自身设为代理对象)
相关文章推荐
- iOS 网络请求数据 同步请求、异步请求、GET、POST请求
- IOS-网络(HTTP请求、同步请求、异步请求、JSON解析数据)
- iOS 信号量解决-网络异步请求的数据同步返回问题
- AsyncTask异步任务加载网络数据
- iOS开发swift版异步加载网络图片(带缓存和缺省图片)
- Javascript 同步异步加载详解
- 详解Vue-Cli 异步加载数据的一些注意点
- Android:ViewPager详解(异步网络加载图片,带图片缓存,并带导航小圆点)
- Android:android的框架区别(网络框架、图片异步加载与缓存框架、数据框架)特点整理
- ios网络学习-- UIWebView的加载本地数据的三种方式
- 异步加载网络数据,自定义进度条显示
- iOS异步加载网络图片
- Android异步加载网络数据以及数据缓存的讲解、实例
- iOS - 网络数据加载等待页面的简单实现
- Android之异步任务加载网络数据
- iOS-网络图片通过NSOperation线程依赖异步加载并保存到沙盒中
- [转载]Javascript 同步异步加载详解
- ios网络开发 同步下载和异步下载
- ios自带同步/异步请求数据
- iOS开发-UIWebView加载本地和网络数据