標籤:sop pre .com ios cut init enc sel nil
為什麼要用NSOperation?為什麼不用GCD
在我認為NSOperation的優點是可控制性的,可以隨時斷開,暫停線程
1 NSBlockOperation *operationA = [NSBlockOperation blockOperationWithBlock:^{ 2 for (int i = 0; i<100; i++) { 3 NSLog(@"-operation-下載圖片-%@",[NSThread currentThread]); 4 } 5 }]; 6 7 operationA.completionBlock = ^{ 8 NSLog(@"--開始下載第二張圖片--%@",[NSThread currentThread]); 9 };10 11 NSLog(@"--現在在幹嘛--%@",[NSThread currentThread]);12 13 NSOperationQueue *queue = [[NSOperationQueue alloc] init];14 [queue addOperation:operationA];
NSOperation添加線程依賴
NSInvocationOperation *operation1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(operationA:) object:nil]; NSInvocationOperation *operation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(operationB:) object:nil]; NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{ for (int i = 0; i<10; i++) { NSLog(@"NSBlockoperation3=--1-----%@",[NSThread currentThread]); } }]; [operation3 addExecutionBlock:^{ for (int i = 0; i<10; i++) { NSLog(@"NSBlockoperation3=--2-----%@",[NSThread currentThread]); } }]; //添加依賴 不能相互依賴 [operation1 addDependency:operation2]; [operation2 addDependency:operation3]; //建立NSOperationQueue NSOperationQueue *queue = [[NSOperationQueue alloc] init]; [queue addOperation:operation1]; [queue addOperation:operation2]; [queue addOperation:operation3];
iOS NSOperation學習