Fork me on GitHub
Showing posts with label cocoa. Show all posts
Showing posts with label cocoa. Show all posts

8/29/2010

iPhone 當中的 delegate(委派) 機制筆記

委派是一種簡單的設計機制。並非什麼特別的語法或者語言特性。

委派的概念簡單來說就是,一個物件幫另外一個物件處理某些任務。一個委派物件透過其 conform 的 protocol 來釐清他應該處理哪些任務。而 protocol 當中有一些 method 是設定為 optional 的,這類的 method 在 conform 該 protocol 的時候,不一定需要實作。

可以想像經理和秘書的關係,經理像是一個物件,秘書就像是一個委派物件。當經理需要傳真文件的時候,會發出一個訊息,告訴秘書(委派物件),這件事該由他來做。秘書要怎麼知道要傳真到哪裡呢?當然這個消息是由經理提供,因為秘書 conform 的 protocol 當中,有明確的規範傳真這件事情的輸入參數,所以只要提供正確的資料就能夠正確的執行代理任務。

@interface DetailViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

如上程式碼:DetailViewController 是一個 UIViewController 並且 conforms UITableViewDelegate 和 UITableViewDataSource 兩個 protocol。代表 DetailViewController 這個類型的物件可以當做 UITableView 的 delegate 和 data source。

參考資料:
iPhone Programming Concepts – The Delegate

Delegates and Protocols

Delegation pattern

設計模式複習筆記(委托機制)

Delegates and Data Sources


......