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

[Swift A] - DataSource 与 Delegate有啥区别?的更多相关文章

  1. [iOS基础控件 - 6.3] 使用可视化连线方式指定dataSource、delegate

    对着要指定dataSource或者delegate的控件右击,然后拖动线到指定的控制器上

  2. swift 基础小结01 --delegate、Optional、GCD的使用、request请求、网络加载图片并保存到沙箱、闭包以及桥接

    本文主要记录swift中delegate的使用.“?!”Optional的概念.GCD的使用.request请求.网络加载图片并保存到沙箱.闭包以及桥接. 一.delegate的使用 swift中de ...

  3. KVC、KVO、NSNotification、delegate 总结及区别

    1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的 ...

  4. iOS 中KVC、KVO、NSNotification、delegate 总结及区别-b

    1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的 ...

  5. 在OC中调用Swift类中定义delegate出现:Property 'delegate' not found on object of type ...

    找了许久没找到答案, 在下面的链接中, 我解决了这个问题: http://stackoverflow.com/questions/26366082/cannot-access-property-of- ...

  6. 谈 jquery中.band() .live() .delegate() .on()的区别

    bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 $("a").bind("click",function(){alert(& ...

  7. Swift UIViewController中的delegate方式传值

    ios swift开发中有几种方式传值,看到简书上一篇不错的文章. 链接:http://www.jianshu.com/p/3e1173652996 一.通过segue进行传值 二.通过delegat ...

  8. 【转】jQuery中.bind() .live() .delegate() .on()的区别

    bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 $("a").bind("click",function(){alert(& ...

  9. jQuery中.bind() .live() .delegate() .on()的区别

    bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 $("a").bind("click",function(){alert(& ...

随机推荐

  1. CSS页面排版的一点笔记

    CSS页面排版 字体族 字体族的值是一个字体备选列表,多个字体使用英文逗号隔开,字体名称如果有空格则需要引号. font-family: "Georgia Pro", " ...

  2. 算法练习(js)

    1. 问题:Spinal Tap Case 将字符串转换为 spinal case.Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也 ...

  3. CSS 笔记——定位尺寸

    3. 定位尺寸 -> 尺寸 (1)height 基本语法 height : auto | length 语法取值 auto : 默认值.无特殊定位,根据HTML定位规则分配 length : 由 ...

  4. luogu P1016 旅行家的预算

    题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...

  5. [BZOJ4709][JSOI2011]柠檬(斜率优化DP)

    显然选出的每一段首尾都是相同的,于是直接斜率优化,给每个颜色的数开一个单调栈即可. #include<cstdio> #include<vector> #include< ...

  6. BZOJ 2342 [Shoi2011]双倍回文(manacher+并查集)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2342 [题目大意] 记Wr为W串的倒置,求最长的形如WWrWWr的串的长度. [题解] ...

  7. 【计算几何】【极角排序】【二分】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem J. Triangles

    平面上给你n(不超过2000)个点,问你能构成多少个面积在[A,B]之间的Rt三角形. 枚举每个点作为直角顶点,对其他点极角排序,同方向的按长度排序,然后依次枚举每个向量,与其对应的另一条直角边是单调 ...

  8. django--02 模板的使用

    参考链接:https://www.w3cschool.cn/django/django-template.html 1.新建模板目录  templates 2.在setting文件中注册模板 修改 T ...

  9. 【docker】解决docker pull镜像 拉取镜像龟速的问题,docker拉取镜像使用阿里云docker镜像加速器

    在docker拉取mysql镜像过程中,出现龟速的问题,解决这个问题的方法: 这个页面 停留了好久好久,依旧没有下载完成. 碰上这种情况 1.先退出Ctrl+C 2.在浏览器上进入阿里云docker库 ...

  10. 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面

    这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...