1、创建一个继承自NSObject的类
2、定义一个类方法实现图片的下载
主要代码如下:
.h文件中:
#import <Foundation/Foundation.h>
#pramag ----------要引入该文件
#import <UIKit/UIKit.h>
//方法一:使用协议异步下载图片:
#pragma mark============声明协议
@protocol ZQImageDownLoaderDelegate <NSObject>
-(void)imageDownLoaderDownLoadImage:(UIImage *)image;
@end
//方法二:block方法异步下载图片
//起别名
typedef void(^imageDownLoaderBlock)(UIImage *);
/*@protocol ZQImageDownLoaderDelegate<NSObject>
-(void)imageDownLoader:(UIImage *)iamge;
@end
*/
@interface ZQImageDownLoader : NSObject
//同步下载
+(UIImage *)imageDownloaderDownLoadImageWithImageURLString:(NSString *)imageURL;
//异步下载(代理方法)
+(void)imageDownloaderDownLoadImageWithImageURLStringByAsynchronization:(NSString *)imageURL delegate:(id<ZQImageDownLoaderDelegate>)delegate;
//异步下载(BLOCk方法)
+(void)iamgeDownLoad:(NSString *)urlString block:(imageDownLoaderBlock)block;
.m文件中
@implementation ZQImageDownLoader
//同步下载
+(UIImage *)imageDownloaderDownLoadImageWithImageURLString:(NSString *)imageURL
{
//根据传进来的网址字符串创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURL]];
//使用data对象接收同步请求的图片数据
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//返回请求后的图片对象
return [UIImage imageWithData:data];
}
////异步下载
+(void)imageDownloaderDownLoadImageWithImageURLStringByAsynchronization:(NSString *)imageURL delegate:(id<ZQImageDownLoaderDelegate>)delegate
{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURL]];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
UIImage *image = [UIImage imageWithData:data];
//代理对象执行此方法
//如果代理对象不为空,且实现了代理方法(传递值)
if(delegate && [delegate respondsToSelector:@selector(imageDownLoaderDownLoadImage:)]){
//则代理执行此方法
[delegate imageDownLoaderDownLoadImage:image];
}
}];
}
//异步下载(BLOCk方法)
+(void)iamgeDownLoad:(NSString *)urlString block:(imageDownLoaderBlock)block
{
//根据图片网址字符串创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
//异步下载图片
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//根据data对象创建图片对象
UIImage *image = [UIImage imageWithData:data];
//block传递值
block(image);
}];
}
//在视图控制器中调用这三种方法
#pragma mark================图片封装
- (IBAction)DownLoadImage:(UIButton *)sender
{
// 同步下载
// _iamgeView.image = [ZQImageDownLoader imageDownloaderDownLoadImageWithImageURLString:IMAGE_URL2];
// //异步下载(代理传值)
// [ZQImageDownLoader imageDownloaderDownLoadImageWithURLString:IMAGE_URL2 delegate:self];
//异步下载(block传值)
[ZQImageDownLoader iamgeDownLoad:IMAGE_URL1 block:^(UIImage *image){
_iamgeView.image = image;
}];
}
//实现协议方法
//-(void)imageDownLoaderDownLoadImage:(UIImage *)image
//{
// _iamgeView.image = image;
//}