天天看點

Target-Action回調模式

        前面的部落格中提到過回調的概念,是在oc通過協定來實作的回調,和java中的接口的回調極為相似,下面來介紹另一種方法回調模式: target-action回調。首先我們來從字面意思來了解一下target-action回調模式,target目标即我們要調用哪個目标對象中的方法。action是行為的意思,就是我們要調用目标對象中的哪一個方法。委托回調模式之前在java中接觸過,而target-action回調模式筆者是第一次接觸,可能是筆者道行太淺,感覺這是oc中對回調的新用法,感覺還行,不難了解。

        還是那句話,廢話少說,用代碼說問題最為直接了。下面代碼是筆者根據自己的了解寫的的測試demo,不足之處還請批評指正,轉載或者引用請注明出處。

        在做測試的project中,我們需要用到一個controler和兩個元件componentone和componenttwo。為了展現出target-action回調模式,我們需要在元件中通過target-action回調模式來回調controler中每個元件所對應的方法。為實作在元件中的回調,我們需要controler在元件中進行注冊,不然就找不到target對象和回調的方法啦。

        為了作對比,在元件1中回調的方法是不帶參數的,而在元件2中回調的方法是帶參數的。可能到這讀者看來上面的内容感覺有點抽象,看代碼來的最為直接,代碼走起~

        1.首先我們先編寫我們的元件1,在元件1中回調的controler方法是不帶參數的

            元件1中的接口:

        元件1的實作:

        代碼說明:

            1.屬性target用于接收controler的對象,也就是要回調的目标對象。

            2.屬性action用于接收目标對象的方法,也就是要在目标對象中要回調的方法

            3.addtarget: action:方法用于注冊目标動作,說白了目标對象和目标對象的方法是通過這個方法傳入到元件中的

            4.start函數負責回調目标對象中的方法

    2.元件1完事以後我們就開始編寫我們的元件2啦,元件2群組件1中唯一不同的地方是回調的方法需要元件2提供參數,下面就隻給出不同的部分代碼:

        代碼說明: 在回調controler方法的時候,需要元件2提供參數,然後再回調

    ​3.元件寫好了,接下來我們就開始裝配了,下面我們就開始編寫我們的controler方法,來完成組裝任務,并且給每個元件提供相應的回調方法。在每個回調方法中就開始編寫我們的業務邏輯,同時也可以根據元件提供的參數來實作我們的特定業務邏輯。下面就是我們的controler的實作部分。

    ​    ​裝配時為了隐藏我們的元件,我們在實作檔案中用延展來裝配我們的元件,假定在controler中要使用我們的元件1、2,controler中的代碼如下:

    ​    ​代碼說明:

    ​    ​    ​    ​1.在controler中我們聲明并執行個體化了我們要使用的元件子產品

    ​    ​    ​    ​2.在controler中聲明和實作元件中controler對象要回調的方法

    ​    ​    ​    ​3.在元件執行個體化後我們要再元件中注冊我們要調用controler中的那個方法。

    ​    ​    ​    ​4.注冊後,我們就可以啟動元件來測試元件功能

    ​4,在mian函數中我們為了測試,把controler進行執行個體化,代碼如下:

    ​    ​上面代碼的運作結果如下:

​    ​    ​

    ​上面所有的代碼是筆者根據個人了解target-action回調模式來設計的樣例,因水準有限,避免有偏頗之處。希望大家批評指正。