麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ios開(kāi)發(fā)-NSOperation高級(jí)功能

2019-11-14 19:58:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

直接上代碼

示例1:

@interface TBViewController()

//隊(duì)列

@PRoperty(nonatomic,strong)NSOperationQueue *queue;

@end

//隊(duì)列的暫停和繼續(xù)(在storyboard中拖兩個(gè)按鈕,分別為暫停、繼續(xù),連線)

//暫停

-(IBAction)pause

{

  if(self.queue.operationCount == 0){

  NSLog(@"無(wú)操作");

  return;

}

 

  //掛起》暫停  暫停的是隊(duì)列,讓隊(duì)列暫時(shí)不再派發(fā)任務(wù)

  NSLog(@"暫停");

  [self.queue setSuspended:YES];  

}

//繼續(xù)

-(IBAction)resumue

{

  if(self.queue.operationCount == 0){

  NSLog(@"無(wú)操作");

  return;

}

  NSLog(@"繼續(xù)");

  [self.queue setSuspended:NO];

}

//懶加載

-(NSOperationQueue *)queue

{

  if(_queue == nil){

  _queue = [[NSOperationQueue alloc]init];

}

  return _queue;

}

 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

  [self opDemo1];

}

//同時(shí)并發(fā)線程數(shù)量

-(void)opDemo1

{

  //線程開(kāi)啟的隊(duì)列是由GCD底層決定的,程序員不能參與

 

/*

設(shè)置最大并發(fā)數(shù)的好處:線程開(kāi)啟有消耗

3G:     2~3條線程,線程少,流量少,省錢,省電

WIFI:   5~6條線程,線程多,效率高,流量大,不花錢,可以隨時(shí)充電

*/

 

  self.queue maxConcurrentOperationCount = 3;//最大并發(fā)數(shù)量

  for(int i = 0;i < 100; i ++){

    [self.queue addOperationWithBlock:^{

      //阻塞

        [NSThread sleepForTimeInterval:2];

      NSLog(@"%@ %d",[NSThread currentThread];)

}];

}

}

 

示例2:操作的依賴-》操作的執(zhí)行順序

-(void)opDemo3

{

  /*

  例如:

  1、下載小電影的壓縮包

  2、解壓縮

  3、保存文件

  4、通知用戶

  */

NSBlockOperation*op1 = [NSBlockOperation blockOperationWithBlock:^{

    NSLog(@"下載:%@",[NSThread currentThread]);

}];

NSBlockOperation*op2 = [NSBlockOperation blockOperationWithBlock:^{

    NSLog(@"解壓縮:%@",[NSThread currentThread]);

}];

NSBlockOperation*op3 = [NSBlockOperation blockOperationWithBlock:^{

    NSLog(@"保存:%@",[NSThread currentThread]);

}];

NSBlockOperation*op4 = [NSBlockOperation blockOperationWithBlock:^{

    NSLog(@"通知用戶:%@",[NSThread currentThread]);

}];

  //依賴

  [op2 addDependency:op1];

  [op3 addDependency:op3];

  [op4 addDependency:op3];

  //循環(huán)依賴(一定不要出現(xiàn))

  [op1 addDependency:op4];

  

  //異步的  waitUntilFinished  等待所有操作完成在繼續(xù)

  [self.queue addOperations:@[op1,op2,op3] waitUntilFinished:NO];

//主隊(duì)列

  [[NSOperationQueue mainQueue] addOperation:op4];

}

 

總結(jié):

/*

  NSOperation

1.是對(duì)GCD的封裝

2、是OC的,面向?qū)ο蟮模褂酶尤菀?/p>

3、提供了一些特殊的方法,是GCD不容易實(shí)現(xiàn)的,例如:最大并發(fā)線程數(shù)量、暫停和繼續(xù)

4、可以指定操作的依賴關(guān)系,依賴關(guān)系是可以跨隊(duì)列的

5、自定義的隊(duì)列,是并發(fā)隊(duì)列,操作是異步任務(wù)

 

  GCD

1、是C語(yǔ)言的,難度有點(diǎn)大

2、once

3、after

4、GCD還有非常多復(fù)雜的功能

*/

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品18久久久久久久 | 极品美女一级毛片 | 亚洲国产高清视频 | 性欧美暴力猛交69hd | 成人午夜精品久久久久久久蜜臀 | 在线成人影视 | 性少妇videosexfreexx入片 | 亚洲精品一区二区三区大胸 | 激情视频导航 | 99国产精品国产免费观看 | 国产亚洲精品久久午夜玫瑰园 | 经典三级在线视频 | 国产精品一区二区羞羞答答 | 欧美××××黑人××性爽 | 羞羞视频免费网站含羞草 | 性 毛片| 中文字幕在线观看91 | 国产一级做a | 毛片视频免费观看 | 日韩精品中文字幕在线观看 | 国产精品久久久久久久娇妻 | 久久精品黄 | 成人勉费视频 | 久草在线资源福利站 | 国产流白浆高潮在线观看 | 操你逼 | 精品一区视频 | 狠狠色噜噜狠狠狠米奇9999 | 亚洲乱妇19p | 中国av免费观看 | 国产一区国产二区在线观看 | 午夜视频亚洲 | 久久成人在线观看 | 久久蜜桃精品一区二区三区综合网 | 日日狠狠久久 | 亚洲第一黄色网 | 国产成人在线一区 | 久久久久国 | 国产成人精品免高潮在线观看 | 91九色精品国产 | 国产精品一区免费在线观看 |