NSOperation-方法使用
一、并發(fā)數(shù)
-
簡介
(1)該屬性控制隊(duì)列是串行執(zhí)行還是并發(fā)執(zhí)行
(2)如果最大并發(fā)數(shù)等于1,那么該隊(duì)列是串行的,如果大于1那么是并行的
(3)系統(tǒng)的最大并發(fā)數(shù)有個(gè)默認(rèn)的值,為-1,如果該屬性設(shè)置為0,那么不會執(zhí)行任何任務(wù)
-
代碼
//1.創(chuàng)建隊(duì)列 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; //2.設(shè)置最大并發(fā)數(shù) queue.maxConcurrentOperationCount = 2;
-
補(bǔ)充
設(shè)置同時(shí)最大并發(fā)操作數(shù)量
- WIFI: 5~6條
- 2G/3G/4G:2~3條
二、隊(duì)列的取消,暫停和恢復(fù)
- (void)cancelAllOperations
取消隊(duì)列的所有操作。
也可以調(diào)用:NSOperation的-(void)cancel方法取消單個(gè)操作
@property (getter=isSuspended) BOOL suspended;
- setSuspended:(BOOL)b
YES表示暫停隊(duì)列,NO表示回復(fù)隊(duì)列
if (self.opQueue.isSuspended) {
NSLog(@"繼續(xù)");
self.opQueue.suspended = NO;
} else {
NSLog(@"暫停");
self.opQueue.suspended = YES;
}
三、操作依賴
-
簡介
1、建立操作之間的執(zhí)行順序關(guān)系 2、若要建立操作之間的依賴關(guān)系,必須在操作被添加到隊(duì)列之前建立
-
代碼
-(void)demo{ //創(chuàng)建隊(duì)列 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; //創(chuàng)建三個(gè)任務(wù) NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{ //任務(wù)1代碼 NSLog(@"operation1----%@",[NSThread currentThread]); }]; NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{ //任務(wù)2代碼 NSLog(@"operation2----%@",[NSThread currentThread]); }]; NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{ //任務(wù)3代碼 NSLog(@"operation3----%@",[NSThread currentThread]); }]; //operation1 依賴于 operation2 [operation1 addDependency:operation2]; //operation2 依賴于 operation3 [operation2 addDependency:operation3]; //添加到隊(duì)列中區(qū) [queue addOperation:operation1]; [queue addOperation:operation2]; [queue addOperation:operation3]; NSLog(@"-------------------"); }
圖-1
-
補(bǔ)充
不能循環(huán)依賴(不能A依賴于B,B又依賴于A)。
//把上處地方更改一下 //operation1 依賴于 operation2 [operation3 addDependency:operation2]; //operation2 依賴于 operation3 [operation2 addDependency:operation3];
圖-2
結(jié)束
本章到此結(jié)束
歡迎各位碼友隨意轉(zhuǎn)載并指正