#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
//NSObject依赖于UIKit,
//声明一个block方法
typedef void (^ImageDownladerBlock) (UIImage *image);
@protocol ZYPhotoProtocol <NSObject>
@optional
//相当于方法的声明
-(void)imageDownloaderDownloadImage:(UIImage*)image;
@end
@interface ZYImageDownloader : NSObject
//同步下载
+(UIImage*)imageDownloaderDownloadImageWithURLString:(NSString*)imageURL;
+(void)imageDownloaderDownloadImageWithURLStringByAsyn:(NSString *)imageURL delegate:(id<ZYPhotoProtocol>) delegate;
+(void)downloadImageWithURLString:(NSString *)imageURL
block:(ImageDownladerBlock)block;
@end
=======================================================
#import "ZYImageDownloader.h"
@interface ZYImageDownloader ()
@property(nonatomic,strong) UIImage *image;
@end
@implementation ZYImageDownloader
+(UIImage*)imageDownloaderDownloadImageWithURLString:(NSString *)imageURL
{
//根据传递进来的网址字符串创建请求对象
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:[NSURL URLWithString:imageURL]];
//使用Data对象接收同步请求的图片数据
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//返回请求后的图片对象
return [UIImage imageWithData:data];
}
+(void)imageDownloaderDownloadImageWithURLStringByAsyn:(NSString *)imageURL delegate:(id<ZYPhotoProtocol>)delegate
{
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:[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];
}
}];
}
+(void)downloadImageWithURLString:(NSString *)imageURL
block:(ImageDownladerBlock)block
{
//获取URL并创建请求对象
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:[NSURL URLWithString:imageURL]];
//发送异步请求数据消息
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//得到图片数据
UIImage *image = [UIImage imageWithData:data];
//利用block传值--
block(image);
}];
}
@end