iPhone開發中的代理與協議(Delegate and Protocol)

我們可以通過發送消息給對象出發特定動作,但對象發送某些變化的時候用什麼方法通知我們呢?對的,通過回調函數(callback)。對象在特定事件發生的時候,就會調用對應的回調函數,觸發業務邏輯。

在iPhone的開發框架中,回調函數通過所謂的代理(Delegation)來實現,舉例說明:每個UITextView對象都有一個delegate屬性,該屬性指向一個特定的對象,所謂特定指的是該對象遵從特定的協議(Protocol),這個與Java中的Interface應該是同一概念,指的是預定義方法的集合,如:


@protocol UITextViewDelegate

@optional
-(BOOL) textViewShouldBeginEditing: (UITextView *)text View;
-(BOOL) textView:(UITextView *)text View
shouldChangeTextInRange:(NSRange) range
raplacementText:(NSString *)text;
-(void) textViewDidChange:(UITextView *)textView;
@end


單對象的特定事件觸發的時候,對象就會調用delegate指向對象對應的協議方法。在蘋果的開發文檔中,每個協議都有單獨的頁面列出所有的方法和參數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章