在多線程編程中,少不了異步編程,在目前開發中用到的比較多得時GCD,恰好今天學習了NSOperation,因此就記錄一下學習的筆記。git
NSOperation
表示了一個獨立的計算單元。它給了它的子類一個十分有用並且線程安全的方式來創建狀態、優先級、依賴性和取消等的模型。或者,你不是很喜歡再本身繼承NSOperation
的話,框架還提供NSBlockOperation
,這是一個繼承自NSOperation
且封裝了block的實體類。github
可是僅僅把這個計算封裝到一個對象不作處理也沒有什麼用,因此這就須要NSOperationQueue來管理。NSOperationQueue控制這些並行操做的執行,管理着優先級(NSOperation queuePriority)高的操做能比優先級低得操做先運行,而且能夠設置最大併發量maxConcurrentOperationCount。編程
在NSOperation中能夠經過start開始執行,添加到NSOperationQueue中,通常狀況是根據先進先出的原則執行裏面的方法。安全
NSOperation通常來講有三個狀態:isReady,isExcuting,isFinished.多線程
isReady ---> isExecuting ---> isFinished
總結的一張圖片:併發
參考:框架
http://nshipster.cn/nsoperation/dom
github開源項目:世界盃足球異步