同步与异步的表面现象上来看,区别是数据传输会不会阻塞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];
(这里将自身设为代理对象)
网友评论