多執行緒之 NSOperation

2022-08-21 08:30:15 字數 2162 閱讀 6093

nsoperation

優點:不需要關心執行緒管理,資料同步的事情,可以把精力放在自己需要執行的操作上。

nsoperation例項封裝了需要執行的操作和執行操作所需的資料,並且能夠以併發或非併發的方式執行這個操作。

nsoperation本身是抽象基類,因此必須使用它的子類,使用nsoperation子類的方式有2種:一種是用定義好的兩個子類:nsinvocationoperation 和 nsblockoperation,另一種是自定義子類繼承nsoperation,實現內部相應的方法

nsoperation的作用:配合使用nsoperation和nsoperationqueue也能實現多執行緒程式設計取消操作

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

a.需要執行的操作封裝到乙個nsoperation物件中

b.將nsoperation物件新增到nsoperationqueue中

c.系統會⾃動將nsoperationqueue中的nsoperation取出來

d.將取出的nsoperation封裝的操作放到⼀條新執行緒中執⾏

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

nsinvocationoperation*operation=[[nsinvocationoperationalloc

]initwithtarget

:self

selector

:@selector

(run1)

object

:nil

];//執行操作  

[operation start];

//注意:操作物件預設在主線程中執行,只有新增到佇列中才會開啟新的執行緒。即預設情況下,如果操作沒有放到佇列queue中,都是同步執行。只有將nsoperation放到乙個nsoperationqueue中,才會非同步執行操作

nsinvocationoperation*operation1 = [[nsinvocationoperationalloc

] initwithtarget

:self

selector

:@selector

(run1)

object

:nil

];[operation1 start];

nsblockoperation*block=[nsblockoperationblockoperationwithblock

:^];

//在nsblockoperation物件中新增乙個操作,如果nsblockoperation物件至少包含了多個操作,有乙個是主線程中執行,其他均在子執行緒中

[block addexecutionblock:^];

[block addexecutionblock:^];

[block addexecutionblock:^];

[block start];

//注意:新增操作要放在start之前

//建立佇列:將操作放入佇列中(主佇列除外)預設的在子執行緒中執行,且不用手動start

nsoperationqueue*queue=[[nsoperationqueuealloc

]init

];//nsoperationqueue

的作⽤:

nsoperation

可以調⽤

start

⽅法來執⾏任務

,但預設是同步執行的。如果將

nsoperation

新增到nsoperationqueue(

操作佇列)中

,系統會自動非同步執行

nsoperation

中的操作。新增操作到

nsoperationqueue

中,自動執行操作,自動開啟執行緒

nsinvocationoperation*qoperation=[[nsinvocationoperationalloc

]initwithtarget

:self

selector

:@selector

(run2)

object

:nil

];[queue addoperation:qoperation];

[queue addoperationwithblock:^];

}-(void)run1

-(void)run2

iOS 多執行緒之NSOperation

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

iOS 多執行緒之NSOperation

簡單說明 nsoperation和nsoperationqueue實現多執行緒的具體步驟 nsoperation的子類 使用nsoperation 類的方式有3種 nsinvocationoperation子類 建立操作物件,封裝要執行的任務 nsinvocationoperation 封裝操作 n...

iOS整理 多執行緒之 NSOperation

nsoperation的作用 配合使用nsoperation和nsoperationqueue也能實現多執行緒程式設計 nsoperation和nsoperationqueue實現多執行緒的具體步驟 先將需要執行的操作封裝到乙個nsoperation物件中 然後將nsoperation物件新增到ns...