Cocoa Touch的3種類的交流方式delegate/target/notification

 

1. Delegate函數

在Cocoa Touch類對象運行的週期中,某一個時間點它會去調用一些指定類的指定函數來完成他自身所要完成的功能。這個」指定的類」,就稱爲這個類的委託類。」指定函數」則是一些在協議(protocal)中完定義的方法。post

好比UITableView,在它的運行週期中,它會調用委託類的一系列函數來完成對自身的初始化工做。咱們須要作的,只是指定好它的委託類,而且在委託類中實現UITableView將要調用的委託方法。那我怎麼知道UITableView要調用哪些方法呢?其實很簡單,它所要調用的方法都定義在了協議類裏面。在文檔中能夠找到,與UITableView相關的協議類的名字也都是以UITableView開頭。其中定義的方法就是UITableView在運行週期中所要調用的一些方法。spa

2. Targetcode

繼承自UIControl的類,例如UIButton,能夠設置當被觸發某個事件時,去調用target對象的selector函數。server

[UIButton  addTarget: 目標對象名稱  action:函數名稱 forControlEvents:事件名稱]  

 

 

3. Notification對象

這種方式容許某個對象向消息中心發送消息,這些消息可能標有一些狀態信息。另一些對象可能會在消息中心監聽帶有某些狀態消息的信息,從而作出相應。blog

 

NSNotification *ntf = [NSNotification notificationWithName:@"chgValue" object:self];  
//聲明一個消息,名稱爲chgValue,發送者是對象自己。  
NSNotificationCenter *ntfCenter = [NSNotificationCenter defaultCenter];  
[ntfCenter postNotification:ntf];  
//得到消息中心的單例,將定義好的消息發送給消息中心。  
NSNotificationCenter *ntfCenter = [NSNotificationCenter defaultCenter];  
[ntfCenter addObserver:self selector:@selector(getNtf) name:@"chgValue" object:self];  
[ntfCenter addObserver:self selector:@selector(getNtf2) name:@"chgValue" object:self];  
//得到消息中心的單例,未來源是本對象,名稱爲chgValue的消息分發給本對象的getNtf和getNtf2函數。  
相關文章
相關標籤/搜索