您的位置:首页 > 理论基础 > 计算机网络

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];

(这里将自身设为代理对象)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: