[Swift A] - DataSource 與 Delegate有啥區別?


lukeluke     2012-05-22 07:46 

是不是DATASOURCE,提供的是原來對象里並沒有的數據,比如,共有幾個ITEM啊,

而DELEGATE里,提供的是原來就有的數據,只不過對象他自己不知道現在要用哪一個數據?

 

zzxap 2012-05-22 09:10

DELEGATE是代理

DATASOURCE是數據源

風牛馬不相及

 

forbertl 2012-05-22 09:23

datasource協議里面東西是跟內容有關的,主要是cell的構造函數,各種屬性

delegate協議里面的方法主要是操作相關的,移動編輯之類的,你都寫上要用什么方法自己去翻就是了

 

cxyi99o6i 2012-05-22 09:33

首先Delegate是委托的意思,在oc中則是一個類委托另一個類實現某個方法。當一個對象接受到某個事件或者通知的時候, 會向它的Delegate對象查詢它是否能夠響應這個事件或者通知,如果可以這個對象就會給它的Delegate對象發送一個消息(執行一個方法調用)。

 

Datasource字面是數據源,一般和Delegate伴生,這時數據源處理的數據就是Delegate中發送委托的類中的數據,並通過Datasource發送給接受委托的類。

 

Instead of being delegated control of the user interface, a data source is delegated control of data.官網上這句話解釋的比較好,我們可以發現,delegate控制的是UI,是上層的東西;而datasource控制的是數據。他們本質都是回調,只是回調的對象不同。(官網原文:https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html)

 

 

其他:

1。The main value of delegation is that it allows you to easily customize the behavior of several objects in one central object.

委托的主要價值是讓你可以在一個核心對象里定制多個對象的功能特性。

2。Helper Object(delegate and datasource) are commonly used to add functionality to an existing class without having to subclass it.

構建helper object,helper object用來對已有的類添加功能特性而不是通過子類繼承實現。

在此感謝arachide的評論,原文:http://www.cocoachina.com/bbs/simple/?t6289.html

 

lukeluke 2012-05-22 20:46

謝謝大家,有收獲!

 

biaobiaoqia 2012-05-22 23:12

 

贊3樓,比較透徹哈~

1樓童鞋似乎就沒有這種研究下去的念頭哇。。。其實他們都是回調的一種實現啦,都屬於適配器模式,並非風馬牛不相及的。

 

lukeluke 2012-05-23 00:11

唉,其實我是知道是一種回調啦,只是覺的,都是回調為何還要分成兩個概念。。。我也知道對應的MVC模式啦。。只是開始時覺的都給數據,其實沒什么區別啦。。。

 

后來想到,可能DATASOURCE接口給的數據,都是我們在數組里沒有的,需要我們來算來的東西,比如幾個ITEMS啦

而DELEGATE接口呢,要給的數據,其實UI或者MODEL里都有,但需要我們手工把它們選出來告訴程序。。

 

這就很對應MVC里,DELEGATE對應的CONTROLLER啦,主要在於取數據的流程

 

而MODEL里對應是DATASOURCE,主要在於提供數據

 

這樣一個概念。

 

FROM:http://www.cocoachina.com/bbs/simple/?t103898.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM