A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Latinno 中级黑马   /  2016-4-13 14:27  /  1980 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

上一周周末遇到了这一方面的问题。

其实问题该是展开成三块——OC里的协议,代理,数据源。

协议已经大致上有所了解了,功能有点像继承,实操有点像声明,而且一个类可以多遵守。

当然,站在万物皆对象的角度来看,我认为协议本身也是一个对象,于是协议本身也是可以多遵守的。

那么,什么才是代理呢?

是不是可以按照字面意思理解成:“我作为一个对象,我已经遵守了协议,拿到了协议中所声明的一系列方法之后,就要去作为代理方,去履行协议中所声明的方法来给出实现呢?”

希望大家能够来探讨一下这个问题。

还有就是数据源了,对这个概念还是比较模糊的。希望能有人来系统的讲解一下。

3 个回复

倒序浏览
可简单理解为,在当前类中,将传入的对象,代替当前类完成某个功能,例如MVC模式
回复 使用道具 举报
代理就是通过协议实现的一种设计模式,A类可以声明X协议,并为A类创建一个遵守了X协议的B类的属性。在适当的时候(即在A类的某些方法中)通过其属性B执行X协议里的声明的方法。当然,具体的实现是B类中实现的。非常有效的解决了两个类之间的通信(即传值)问题。并且耦合性不高,阅读十分明了。
回复 使用道具 举报
数据源:在iOS的一些UI控件需要一些特定的数据(如字符串,图片等)才能展示丰富的界面。所有需要有一个对象给这些UI控件传值,而数据源就是指这个给UI控件传值的对象。一般为控制器。控制器成为了UI控件的数据源后需要遵守数据源协议,实现协议中必须实现的方法。一般这些方法中会存在返回值,会将UI控件所需的数据返回。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马