从网络上获取数据:
1.从网络上获取数据,采用如下这种方式会带来主线成阻塞现象,主线成主要是负责的是ui的交互(用户输入指令或数据,系统给一个反馈)
会进一步让ui停止交互
1)首先给我们将要下载的图片设置好位置
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@“地址”]]];
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 100, 80)];
imageView.image = image;
2).加载到view上
self.view addSubview:imageView];
网络下载的几个步骤
1.开始请求
2.实现代理方法对数据进行初始化
3.开始接受数据
4.对接受的数据进行处理
5.在接受失败时候对数据的处理
2.我们应该采用这种方式来进行对网络数据的请求,网络异步加载
1).异步加载要遵循一个代理NSURLConnectionDataDelegate
2).定义的全局变量的一个初始化,用来存放数据
_data = [[NSMutableData alloc]init];
NSURL *url = [NSURL URLWithString:string];
3).像网络发送一个请求,请求数据
NSURLRequest *req = [NSURLRequest requestWithURL:url];
4).进行对网络进行请求的一个类,专门来做网络连接的一个类
NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:NO];
5).开始请求
[conn start];
6).实现代理方法,开始接收数据,对数据进行初始化,每次下载都初始化为0,确保接着下载时里面的长度设为0.清空原始的内容
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
_data.length = 0;
}
7).开始接收拼接数据,也就是追加数据。类似于我们之前的追加字符串的做法
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[_data appendData:data];
}
8).对下载完成的数据进行处理
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
UIImage *image = [UIImage imageWithData:_data];
UIImageView *vie = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 150, 100)];
vie.image = image;
[self.view addSubview:vie];
}
9).出错处理,这里的出错处理有数据的出错,以及网络地址的出错
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"错误");
}
3.采用第三方库的一种方式请求网络数据
步骤,1).倒入第三方库,
2).将库中.m文件结尾的加一个-info-objc-arc,解决arc问题(当然前提是你考虑arc情况的库,如果不是则不需要)
这样省很多代码