雖然一直說多線程穷绵,但是因為實際項目中幾乎用不到自己開辟新的線程所以只有一點了解而已,現(xiàn)在公司沒事就來學習學習特愿。寫下這篇文章只是作為自己以后的方便查閱请垛,別無他意。
NSOperation
NSOperration
只是iOS中一個抽象的類不能封裝任務洽议。但是它有倆字子類分別是NSInvocationOperation
NSBlockOperation
其實它倆只是Block與Target的區(qū)別宗收。
NSInvocationOperation
用法
NSInvocationOperation *Operation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(test) object:nil];
[Operation start];//需要手動啟動任務
NSBlockOperation
用法
NSBlockOperation *operation=[NSBlockOperation blockOperationWithBlock:^{
}];
//添加操作
[operation addExecutionBlock:^{
}];
[operation start];//需要手動啟動任務
以上默認都是在主線程操作的。如果想開辟新的線程則需加入隊列
NSOperationQueue
添加操作到NSOperationQueue中亚兄,自動執(zhí)行操作混稽,自動開啟線程
NSOperationQueue *Queue = [[NSOperationQueue alloc]init];
//添加到這種隊列中的任務(NSOperation),就會自動放到子線程中執(zhí)行
NSOperationQueue *mainqueue = [NSOperationQueue mainQueue];
//凡是添加到主隊列中的任務(NSOperation)审胚,都會放到主線程中執(zhí)行
//倆個都是添加到隊列 區(qū)別還是匈勋。target、block的區(qū)別
- (void)addOperation:(NSOperation *)op;
- (void)addOperationWithBlock:(void (^)(void))block
//添加依賴操作
- (void)addDependency:(NSOperation *)op;
// 讓Op2依賴于 op1膳叨,則先執(zhí)行op1洽洁,在執(zhí)行Op2
[Op2 addDependency:op1];
//刪除依賴操作
- (void)removeDependency:(NSOperation *)op;
//默認是-1 表示不進行限制,并發(fā) 菲嘴。為1時饿自,進行串行執(zhí)行
@property NSInteger maxConcurrentOperationCount;
//取消全部隊列
- (void)cancelAllOperations;
//等待別的隊列結束
- (void)waitUntilAllOperationsAreFinished;