iOS 多執行緒之NSOperation

2022-03-26 07:31:11 字數 2299 閱讀 1270

①.簡單說明

nsoperation和nsoperationqueue實現多執行緒的具體步驟:

②.nsoperation的子類

使用nsoperation⼦類的方式有3種:①.nsinvocationoperation子類

//建立操作物件,封裝要執行的任務

//nsinvocationoperation 封裝操作

nsinvocationoperation *operation=[[nsinvocationoperation alloc]initwithtarget:self selector:@selector(test) object:nil];

//執行操作

[operation start];

//一旦執⾏操作,就會呼叫target的test方法

②.nsblockoperation子類
//建立nsblockoperation操作物件

nsblockoperation *operation=[nsblockoperation blockoperationwithblock:^];

//新增操作

// 子執行緒中執行

[operation addexecutionblock:^];

[operation addexecutionblock:^];

//開啟執行操作

[operation start];

③3.nsoperationqueue
//建立nsoperationqueue

// 自己建立的佇列,就會在子執行緒中執行,而且預設是併發

nsoperationqueue * queue=[[nsoperationqueue alloc]init];

第一種
[queue addoperation:operation2];
第二種
- (void)addoperationwithblock:(void (^)(void))block;

- (nsinteger)maxconcurrentoperationcount;

- (void)setmaxconcurrentoperationcount:(nsinteger)cnt;

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

`注意:不能設為0,設為0不執行。預設是-1.設為1是序列。(1)取消佇列的所有操作

// 取消的是從下個任務開始,當前任務會執行完畢

// 取消不能恢復

- (void)cancelalloperations;

(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依賴於操作a

(2)可以在不同queue的nsoperation之間建立依賴關係
- (void (^)(void))completionblock;

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

iOS多執行緒之NSThread

ios多執行緒之nsthread 乙個nsthread物件就代表一條執行緒 1.建立,啟動執行緒 nsthread thread nsthread alloc initwithtarget self selector selector run object nil thread start 主線程相...

iOS多執行緒之NSThread

1.建立和啟動執行緒 nsthread thread nsthread alloc initwithtarget self selector selector run object nil thread start nsthread mainthread 獲得主線程 bool ismainthrea...

iOS 多執行緒之NSOperation

nsoperation 一一 基礎使用 implementation viewcontroller pragma mark 懶載入 nsoperationqueue quque return quque pragma mark 基本概念 1.兩個核心概念 a.操作 nsoperation 想要做的事...