一、什么是NSOperation?

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

      默認(rèn)情況下,NSOperation單獨(dú)使用時(shí)只能同步執(zhí)行操作,并沒有開辟新線程的能力,只有配合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多線程開發(fā)之GCD(上篇)》中已經(jīng)闡述過GCD的實(shí)質(zhì):開發(fā)者要做的只是定義想執(zhí)行的任務(wù)并追加到適當(dāng)?shù)腄ispatch Queue中。這樣我們也可說NSOperation的本質(zhì)就是:定義想執(zhí)行的任務(wù)(NSOperation)并追加到適當(dāng)?shù)腘SOperationQueue中。

 

二、NSOperation使用

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

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

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