一、什么是NSOperation?

      NSOperation是蘋(píng)果提供的一套多線程解決方案。實(shí)際上NSOperation是基于GCD更高一層的封裝,但是比GCD更加的面向?qū)ο?、代碼可讀性更高、可控性更強(qiáng),很屌的是加入了操作依賴(lài)。

      默認(rèn)情況下,NSOperation單獨(dú)使用時(shí)只能同步執(zhí)行操作,并沒(méi)有開(kāi)辟新線程的能力,只有配合NSOperationQueue才能實(shí)現(xiàn)異步執(zhí)行。講到這里,我們不難發(fā)現(xiàn)GCD和NSOperation實(shí)現(xiàn)的方式很像,其實(shí)這更像是廢話,NSOperation本身就是基于GCD的封裝,NSOperation相當(dāng)于GCD中的任務(wù),而NSOperationQueue則相當(dāng)于GCD中的隊(duì)列,前面《iOS多線程開(kāi)發(fā)之GCD(上篇)》中已經(jīng)闡述過(guò)GCD的實(shí)質(zhì):開(kāi)發(fā)者要做的只是定義想執(zhí)行的任務(wù)并追加到適當(dāng)?shù)腄ispatch Queue中。這樣我們也可說(shuō)NSOperation的本質(zhì)就是:定義想執(zhí)行的任務(wù)(NSOperation)并追加到適當(dāng)?shù)腘SOperationQueue中。

 

二、NSOperation使用

     1、創(chuàng)建任務(wù)

     NSOperation是一個(gè)抽象的基類(lèi),表示一個(gè)獨(dú)立的計(jì)算單元,可以為子類(lèi)提供有用且線程安全的建立狀態(tài),優(yōu)先級(jí),依賴(lài)和取消等操作。但它不能直接用來(lái)封裝任務(wù),只能通過(guò)它的子類(lèi)來(lái)封裝,一般的我們可以使用:NSBlockOperation、NSInvocationOperation或者定義繼承自NSOperation的子類(lèi),通過(guò)實(shí)現(xiàn)內(nèi)部相應(yīng)的方法來(lái)封裝任務(wù)。

網(wǎng)友評(píng)論