NSOperation基本操作

2021-07-23 04:45:08 字數 2761 閱讀 6523

nsoperation基本操作

一、併發數

(1)併發數:同時執?行的任務數.比如,同時開3個執行緒執行3個任務,併發數就是3

(2)最大併發數:同一時間最多只能執行的任務的個數。

(3)最?大併發數的相關?方法

- (nsinteger)maxconcurrentoperationcount;

- (void)setmaxconcurrentoperationcount:(nsinteger)cnt; 

說明:如果沒有設定最大併發數,那麼併發的個數是由系統記憶體和cpu決定的,可能記憶體多久開多一點,記憶體少就開少一點。

注意:num的值並不代表執行緒的個數,僅僅代表執行緒的id。

二、佇列的取消,暫停和恢復

(1)取消佇列的所有操作

- (void)cancelalloperations;

提?:也可以呼叫nsoperation的- (void)cancel?法取消單個操作

(2)暫停和恢復佇列

- (void)setsuspended:(bool)b; // yes代表暫停佇列,no代表恢復佇列

- (bool)issuspended; //當前狀態

三、操作優先順序

(1)設定nsoperation在queue中的優先順序,可以改變操作的執?優先順序

- (nsoperationqueuepriority)queuepriority;

- (void)setqueuepriority:(nsoperationqueuepriority)p;

(2)優先順序的取值

nsoperationqueuepriorityverylow = -8l,

nsoperationqueueprioritylow = -4l,

nsoperationqueueprioritynormal = 0,

nsoperationqueuepriorityhigh = 4,

nsoperationqueuepriorityveryhigh = 8 

說明:優先順序高的任務,呼叫的機率會更大。

四、操作依賴

(1)nsoperation之間可以設定依賴來保證執行順序,?如一定要讓操作a執行完後,才能執行操作b,可以像下面這麼寫

[operationb adddependency:operationa]; // 操作b依賴於操作

(2)可以在不同queue的nsoperation之間建立依賴關係 

注意:不能迴圈依賴(不能a依賴於b,b又依賴於a)。

(3)**示例

1 #import "yyviewcontroller.h"

2 3 @inte***ceyyviewcontroller () 4 5 @end 6 7 @implementationyyviewcontroller 8 9 - (void)viewdidload 10 21 }]; 22 [operation3 addexecutionblock:^ 26 }]; 27 28 //設定操作依賴 29 //先執行operation2,再執行operation1,最後執行operation3 30 [operation3 adddependency:operation1]; 31 [operation1 adddependency:operation2]; 32 33 //不能是相互依賴 34 //[operation3 adddependency:operation1]; 35 //[operation1 adddependency:operation3]; 36 37 //建立nsoperationqueue 38 nsoperationqueue * queue=[[nsoperationqueue alloc]init]; 39 //把操作新增到佇列中 40 [queue addoperation:operation1]; 41 [queue addoperation:operation2]; 42 [queue addoperation:operation3]; 43 } 44 45 -(void)test1 46 50 } 51 52 -(void)test2 53 57 } 58 59 @end

列印檢視:

a做完再做b,b做完才做c。

注意:一定要在新增之前,進行設定。

5.操作的監聽

可以監聽乙個操作的執行完畢

- (void (^)(void))completionblock;

- (void)setcompletionblock:(void (^)(void))block; 

**示例

1 #import "yyviewcontroller.h"

第二種方式:

1 #import "yyviewcontroller.h"

列印檢視:

說明:在上乙個任務執行完後,會執行operation.completionblock=^{}**段,且是在當前執行緒執行(2)。

ios開發——多執行緒oc篇&(十)多執行緒nsoperation基本使用

標籤:class

style

logcom

**使用

原文:

NSOperation 操作 簡介

nsoperation 使用1.簡介 重點 理解操作 nsoperation 和操作佇列 nsoperationqueue nsoperation 使用2.nsoperation 重點 1.nsblockoperation,nsinvocationoperation 的簡單使用.新增更多操作 op2...

NSOperation的基本使用

viewcontroller.m nsoperation的基本使用 nsoperation的作用 配合使用nsopertaion和nsoperationqueue也能實現多執行緒程式設計 nsopertaion和nsoperationqueue實現多執行緒的具體步驟 先將需要執行的操作封裝到乙個ns...

11 NSOperation的其他操作

1 最大併發數 1 什麼是併發數 同時執行的任務書 比如 同時開3個執行緒執行3個任務,併發數就是3 2 最大併發數的相關方法 nsinteger maxconcurrentoperationcount void setmaxconcurretoperationcount nsinteger cnt...