iOS 多執行緒之NSOperation

2021-07-16 05:15:41 字數 1851 閱讀 6569

nsoperation 一一 基礎使用

@implementation

viewcontroller

#pragma mark - 懶載入

- (nsoperationqueue *)quque

return _quque;

}#pragma mark - 基本概念

//1.兩個核心概念

//a.操作(nsoperation):想要做的事情

//nsoperation是抽象類,不能直接使用它去建立物件,要使用它的子類(nsinvocationoperation\nsblockoperation)

//b.佇列(nsoperationqueue):存放操作的容器

//2.步驟

//a.建立乙個佇列

//b.建立乙個操作

//c.將操作新增到佇列中

//操作新增到佇列中以後,系統會自動將操作取出來,放到新的執行緒中執行

#pragma mark - uitouch

- (void)touchesbegan:(nsset *)touches withevent:(uievent *)event

#pragma mark - 高階操作

//依賴關係

//如果希望操作a在操作b執行完後再執行,需要依賴關係;讓操作a依賴操作b

- (void)test7];

nsblockoperation * operationb = [nsblockoperation blockoperationwithblock:^];

//操作b結束後會呼叫completionblock blcok

[operationb setcompletionblock:^];

//2.新增依賴關係

//讓操作a依賴操作b(操作b執行結束後才執行操作a)

//注意:1.先新增依賴關係,再將操作放到佇列中 2.新增依賴關係的時候不能有迴圈依賴(也不能相互依賴)

[operationa adddependency:operationb];

//3.將兩個操作新增到佇列中

[self

.quque addoperations:@[operationb, operationa] waituntilfinished:no];

}//取消佇列(將佇列中操作銷毀,沒有辦法在復原)

//已經從佇列中取出來的操作,沒有辦法取消

- (ibaction)cancel:(id)sender

//佇列暫停/恢復

- (ibaction)suspend:(id)sender else

}#pragma mark - 最大併發數

- (void)test6];

}}#pragma mark - !!!執行緒間通訊

- (void)test5];

}];}#pragma mark - nsoperation的基本使用

//使用nsblockoperation更簡單的建立乙個操作

- (void)test4];

}//使用nsblockoperation簡單的建立乙個操作

- (void)test3];

//2.將操作新增到佇列中

[self

.quque addoperation:operation];

}//建立多個nsinvocationoperation操作

- (void)test2

}//建立乙個nsinvocationoperation操作

- (void)test1

#pragma mark - 耗時操作

- (void)longtimeoperation:(nsnumber *)i

@end

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和nsoperationqueue實現多執行緒的具體步驟 nsoperation的子類 使用nsoperation 類的方式有3種 nsinvocationoperation子類 建立操作物件,封裝要執行的任務 nsinvocationoperation 封裝操作 n...