NSOperation下载图片-03

自定义Operation

.h

 1 #import <Foundation/Foundation.h>
 2 @class HMDownloadOperation;
 3 
 4 @protocol HMDownloadOperationDelegate <NSObject>
 5 
 6 @optional
 7 - (void)downloadOperation:(HMDownloadOperation *)operation didFinishDownload:(UIImage *)image;
 8 
 9 @end
10 
11 @interface HMDownloadOperation : NSOperation
12 /**
13  *  图片的url
14  */
15 @property (nonatomic, copy) NSString *imageUrl;
16 
17 /**
18  *  图片所在的行
19  */
20 @property (nonatomic, strong) NSIndexPath *indexPath;
21 
22 /**
23  *  HMDownloadOperation的代理
24  */
25 @property (nonatomic, weak) id<HMDownloadOperationDelegate> delegate;
26 @end

.m

 1 #import <UIKit/UIKit.h>
 2 #import "HMDownloadOperation.h"
 3 
 4 @implementation HMDownloadOperation
 5 - (void)main
 6 {
 7     @autoreleasepool {
 8         if(self.isCancelled) return;
 9         
10         NSURL *url = [NSURL URLWithString:self.imageUrl];
11         NSData *data = [NSData dataWithContentsOfURL:url]; // 下载图片
12         UIImage *image = [UIImage imageWithData:data];     // data->image
13         
14         if(self.isCancelled) return;
15         
16         // 回到主线程
17         [[NSOperationQueue mainQueue] addOperationWithBlock:^{
18             if([self.delegate respondsToSelector:@selector(downloadOperation:didFinishDownload:)])
19             {
20                 [self.delegate downloadOperation:self didFinishDownload:image];
21             }
22         }];
23     }
24 }
25 @end
原文地址:https://www.cnblogs.com/fkunlam/p/4344580.html