提示:任务添加的顺序并不能够决定执行顺序,执行的顺序取决于依赖。使用Operation的目的就是为了让开发人员不再关心线程。
5.操作的监听
可以监听一个操作的执行完毕 复制代码
- (void (^)(void))completionBlock;
- (void)setCompletionBlock:(void (^)(void))block;
代码示例
第一种方式:可以直接跟在任务后面编写需要完成的操作,如这里在下载图片后,紧跟着下载第二张图片。但是这种写法有的时候把两个不相关的操作写到了一个代码块中,代码的可阅读性不强。
复制代码#import "YYViewController.h"
@interface YYViewController ()
@end
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//创建对象,封装操作
NSBlockOperation *operation=[NSBlockOperation blockOperationWithBlock:^{
NSLog(@"-operation-下载图片-%@",[NSThread currentThread]);
//.....下载图片后继续进行的操作
NSLog(@"--接着下载第二张图片--");
}];
//创建队列
NSOperationQueue *queue=[[NSOperationQueue alloc]init];
//把任务添加到队列中(自动执行,自动开线程)
[queue addOperation:operation];
}
@end
第二种方式:
复制代码
#import "YYViewController.h"
@interface YYViewController ()
@end
复制代码
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//创建对象,封装操作
NSBlockOperation *operation=[NSBlockOperation blockOperationWithBlock:^{










