NSOperation
使用 NSOperation 改造 HMDownloader
修改父类
@interface HMDownloadOperation : NSOperation
重写 main 方法
- 自定义操作,重写了main方法,在当操作被添加到队列的时候,会自动被执行
- 不要忘记自动释放池
- (void)main {
@autoreleasepool {
[self download];
}
}
修改管理器代码
操作队列
@property (nonatomic, strong) NSOperationQueue *downloaderQueue;
- (NSOperationQueue *)downloaderQueue {
if (_downloaderQueue == nil) {
_downloaderQueue = [[NSOperationQueue alloc] init];
}
return _downloaderQueue;
}
修改开始下载代码
[self.downloaderQueue addOperation:downloader];
取消下载操作
- (void)pauserWithURL:(NSURL *)url {
HMDownloadOperation *downloader = self.downloaderCache[url];
if (downloader == nil) {
NSLog(@"%@", self.downloaderQueue.operations);
return;
}
[downloader pause];
[self.downloaderCache removeObjectForKey:url];
}