程序運行的過程中,數據傳輸是APP開發必須考慮的要點,將數據從當前執行的控制器或者控件中傳回控制器或者控件,則是稱為回調。比如成為tableView代理的控制器,在某個時機中,將數據傳回去tableView中,讓tableView更新界面等等。就是回調的一種,成為代理-執行方法這種模式,也是cocoa Touch 中最常見的回調方式。
除了代理之前,還有KVO,通知(KVO的一種),block。這裡我們主要探討代理、通知和block的不同。
首先是大部分人比較熟悉的代理,代理一般需要通過6步來實現,從需要處理數據的對象——委托方,到傳輸數據的對象——代理方(代理一般會是控制器)。一般而言,需要6小步。如果以tableView 為例子,委托方(接收數據)tableView這個類中,需要執行三步。1.定義協議(UITableViewDelegate和UITableDataSource)。2.寫需要遵循協議的屬性(delegate、dataSource) 3.寫協議方法。在代理方(傳數據),同樣需要寫3步。1、遵循協議。2、成為代理。3、在適當的時機實現需要的方法。
代理用起來的時候,需要寫的代碼回比較都多。
然後再說說通知,通知比較常用的場景是,一個控制器中有了新數據,然後需要讓對應的多個控件中相應界面也做出改變,也即是一對多的情況。另一方面,則是需要接收數據的控件或控制器,是隔層的情況時。通知就是最好的選擇了,通知相當於廣播,不知道收到通知的對象是誰,也不知道有多少個。只有在接收通知的對象本身才知道自己接收的通知來自誰,在接收通知之後作出相應改變。
最後簡單說說block,block來說,能實現代理相同的功能。在需要回傳數據的時機,實現需要使用數據的類中已經寫好的bolck,然後將相應的參數寫在block中。就能完成回調。用起來相對簡單,但是也許理解會有一些困難。