可能重複:
What's the difference between data source and delegate?iPhone - 什麼是iPhone中的數據源和委託方法?
我是新來的iPhone。我很困惑什麼是代表和數據源方法以及他們做了什麼。有人可以向我解釋差異嗎?
可能重複:
What's the difference between data source and delegate?iPhone - 什麼是iPhone中的數據源和委託方法?
我是新來的iPhone。我很困惑什麼是代表和數據源方法以及他們做了什麼。有人可以向我解釋差異嗎?
從蘋果公司的Concepts in Objective-C Programming文件:
代表委託是行爲代表的,或與其他對象協調時對象的程序遇到的事件 的對象。委託對象通常是一個響應者對象,即 是一個對象,它繼承自AppKit中的NSResponder或UIResponder中的 UIKit - 它響應用戶事件。該代表是一個對象 ,該對象被委派控制該事件的用戶界面,或者至少要求以特定於應用程序的方式解釋事件 。
爲了更好地理解委派的值,它有助於考慮一個 關閉的,現成的可可對象,諸如文本字段( 的NSTextField或的UITextField的一個實例)或表視圖( NSTableView的或的一個實例UITableView)。這些對象旨在以通用方式履行特定角色;例如,AppKit 框架中的窗口對象響應其控件的鼠標操作,並處理諸如關閉,調整大小和移動物理窗口等操作。這種限制性和通用行爲必然會限制對象可以知道事件如何影響(或將影響)應用程序中其他位置的內容,尤其是當受影響的行爲特定於您的應用程序時。委託爲 提供了一種方法,使您的自定義對象能夠將應用程序特定的 行爲傳達給現成的對象。
委託的編程機制爲對象提供了一個機會來協調其外觀和狀態,並在程序中的其他位置發生更改 ,更改通常是由用戶操作引起的。更重要的是,委託可以讓一個對象改變另一個對象的行爲,而不需要從它繼承。代理幾乎總是您的自定義對象之一,並且通過 定義,它包含了通用的 和委託對象不可能知道的應用程序特定的邏輯。
數據源
數據源相似,但代表,而不是被所述用戶界面的 委派控制,它被委派 數據的控制。數據源是由NSView和UIView對象(如表視圖和大綱視圖)持有的插座,它們需要從中填充其可見數據行的源。視圖的數據源通常是作爲其委託的相同對象,但它可以是任何 對象。與代表一樣,數據源必須實現一個或多個非正式協議的方法,以便爲視圖提供它所需的數據 ,並且在更高級的實現中,可以處理用戶在這些視圖中直接編輯的數據。
與代表一樣,數據源也是必須存在的對象,以便從請求數據的對象接收消息。使用它們的應用程序 必須確保它們的持久性,如果在內存管理代碼中需要 ,則保留它們。
數據源負責對象的持久性,它們將 交給用戶界面對象。換句話說,他們是 負責這些對象的內存管理。但是,每當查看對象(如大綱視圖或表視圖)訪問來自數據源的數據時,只要數據使用了 ,它就會保留這些對象。但它不會長時間使用這些數據。通常,它僅保留數據足夠長的時間以顯示數據。
請在谷歌搜索這個,你會得到很多結果。這是1個類似的問題。 http://stackoverflow.com/questions/2232147/whats-the-difference-between-data-source-and-delegate – 2012-07-10 09:21:12