- (void)viewDidLoad {
[super viewDidLoad];
[self createDependency];
}
- (void)createDependency {
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSBlockOperation *firstOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"开始下载图片一...");
[NSThread sleepForTimeInterval:3];
NSLog(@"下载图片一完成");
}];
NSBlockOperation *secondOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"开始下载图片二...");
[NSThread sleepForTimeInterval:5];
NSLog(@"下载图片二完成");
}];
NSBlockOperation *thirdOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载图片三");
}];
[thirdOperation addDependency:firstOperation];
[thirdOperation addDependency:secondOperation];
[queue addOperation:firstOperation];
[queue addOperation:secondOperation];
[queue addOperation:thirdOperation];
}
- (IBAction)blockSync:(id)sender {
NSBlockOperation *operation = [[NSBlockOperation alloc] init];
[operation addExecutionBlock:^{
NSLog(@"下载图片一:%@", [NSThread currentThread]);
}];
[operation addExecutionBlock:^{
NSLog(@"下载图片二:%@", [NSThread currentThread]);
}];
[operation addExecutionBlock:^{
NSLog(@"下载图片三:%@", [NSThread currentThread]);
}];
[operation addExecutionBlock:^{
NSLog(@"下载图片四:%@", [NSThread currentThread]);
}];
[operation addExecutionBlock:^{
NSLog(@"下载图片五:%@", [NSThread currentThread]);
}];
[operation start];
}
- (IBAction)blockAsync:(id)sender {
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载图片一:%@", [NSThread currentThread]);
}];
NSBlockOperation *anotherOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载图片二:%@", [NSThread currentThread]);
}];
NSBlockOperation *thirdOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载图片三....%@",[NSThread currentThread]);
}];
NSBlockOperation *forthOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载图片四....%@", [NSThread currentThread]);
}];
NSBlockOperation *fifthOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载图片五....%@", [NSThread currentThread]);
}];
NSBlockOperation *sixthOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载图片六....%@", [NSThread currentThread]);
}];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.maxConcurrentOperationCount = 2;
[queue addOperation:operation];
[queue addOperation:anotherOperation];
[queue addOperation:thirdOperation];
[queue addOperation:forthOperation];
[queue addOperation:fifthOperation];
[queue addOperation:sixthOperation];
}