iOS开发:图片的异步加载
目的:为了加速图片加载,减少冗余。
方法:可将加载图片过程异步加载,使用代理传值传回主界面,进行使用!
重点:代理传值:从后一个界面传值到前一个界面
实现过程:
1.在第二个界面声明一个协议方法
(1).协议格式:
(2).具体实例
@protocol ImageLoadingDelegate <NSObject>
- (void)loadImage:(UIImage *)image;
@end
(1).@property(nonatomic, assign)id <ImageLoadingDelegate>testDelegate;
(2).声明一个加载方法,用来实现赋值
- (void)loadImageWithURLString:(NSString *)urlString;
3.异步加载
(1).实现代理方法
- (void)loadImageWithURLString:(NSString *)urlString{
//实际上就是一个block的Get请求过程,将解析得到的data传回首页
NSString *strEncode = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:strEncode];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//将解析得到的data传给代理人,谁签了这个代理就得到了这个data
[self.testDelegate loadImage:[UIImage imageWithData:data]];
}];
}