ios 自訂的NSOperation添加到NSOperationQueue中,系統自動執行start方法

來源:互聯網
上載者:User

1. 建立了3個任務,加入到隊列中去執行

- (void)createOperationQueue{    //建立一個隊列    NSOperationQueue *queue = [[NSOperationQueue alloc]init];        //建立一個任務    LJOperation *op1 = [[LJOperation alloc]init];    op1.nameStr = @"op1";        LJOperation *op2 = [[LJOperation alloc]init];     op2.nameStr = @"op2";        LJOperation *op3 = [[LJOperation alloc]init];     op3.nameStr = @"op3";        NSLog(@"block----%@",[NSThread currentThread]);        //把任務添加到隊列當中去,相當於調用了任務的start方法    //倘若我們希望LJOperation執行某種方法,只需要重寫start方法就可以,(系統會自動去調start方法)    [queue addOperation:op1];    [queue addOperation:op2];    [queue addOperation:op3];}


看看控制台列印的結果;

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393020] __FUNCTION__start_op1

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393051] __FUNCTION__start_op3

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393022] __FUNCTION__start_op2


從上面的結果可以看出op1先執行,然後op3,然後op2,沒有按照順序執行。

這是為什麼了。因為當我們把operation添加到隊列中去後,就相當於把operation交給了系統,然後由系統決定它的執行順序。
上面自訂的 NSOperation

@interface LJOperation : NSOperation//隨便傳入一個名字,作為Operation區分用@property(nonatomic,copy)NSString *nameStr;@end

#import "LJOperation.h"@implementation LJOperation//重寫NSOperation的start方法,在此處寫下你想執行的方法代碼- (void)start{    //do something    NSLog(@"%s",__FUNCTION__);    NSLog(@"__FUNCTION__start_%@",self.nameStr);}- (void)main{   NSLog(@"%s",__FUNCTION__);  // NSLog(@"__FUNCTION__main_%@",self.nameStr);}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.