ios自用学习笔记一委托协议的简单了解
2015-06-13 22:07
477 查看
最近发现写学习笔记是一件非常重要的事情,可以复习自己最近一段时间的收获,于是决定从现在起写自己的博客,可能对别人来说并没有什么用,忘见谅。废话不多说,直入正题。
前段时间看别人的代码发现自己对委托和协议并不算理解了,于是又在网上学习了一下,理解了个大概。委托(Delegate)顾名思义就是将一件事情拿给别人去办,在oc里就是一个类让另外一个类执行一个方法(不知道说得对不对)。例如有一个classA类,包含一个print方法,然后有一个classB,包含一个成员变量classA,然后classB想执行print方法,但是classB并没有print方法,于是要交给classA执行,所以我们调用如下语句[b.a
print];就能达到执行print方法的目的。
协议(protocol)一般是实现委托时采用的方法,所谓协议就是一种约束,定义一个协议,里面有若干方法但是并未实现,遵循了此协议的类必须实现该协议当中必须实现的方法。协议有什么用呢?协议能在类之间传递消息,能更好的实现委托。委托存在一个问题,就是一个类怎么才能知道另一个类具有它所需要的方法呢?此时协议就派上用场了。当一个类实现了另一个类中所定义的协议后,另一个类就知道这个类具有自己所需要的方法,从而防止了出错。这在uikit中是经常用到的。例如在UITableView中有一个UIViewDelegate,当一个UIViewController中包含了UItableView时这个ViewController也必须实现UIViewDelegate,因为当UITableView要执行某些功能时需要调用协议中的方法。
今天就先写到这儿,第一篇学习笔记这么短。。。算了,万事开头难。明早还有事,得早点休息。
前段时间看别人的代码发现自己对委托和协议并不算理解了,于是又在网上学习了一下,理解了个大概。委托(Delegate)顾名思义就是将一件事情拿给别人去办,在oc里就是一个类让另外一个类执行一个方法(不知道说得对不对)。例如有一个classA类,包含一个print方法,然后有一个classB,包含一个成员变量classA,然后classB想执行print方法,但是classB并没有print方法,于是要交给classA执行,所以我们调用如下语句[b.a
print];就能达到执行print方法的目的。
协议(protocol)一般是实现委托时采用的方法,所谓协议就是一种约束,定义一个协议,里面有若干方法但是并未实现,遵循了此协议的类必须实现该协议当中必须实现的方法。协议有什么用呢?协议能在类之间传递消息,能更好的实现委托。委托存在一个问题,就是一个类怎么才能知道另一个类具有它所需要的方法呢?此时协议就派上用场了。当一个类实现了另一个类中所定义的协议后,另一个类就知道这个类具有自己所需要的方法,从而防止了出错。这在uikit中是经常用到的。例如在UITableView中有一个UIViewDelegate,当一个UIViewController中包含了UItableView时这个ViewController也必须实现UIViewDelegate,因为当UITableView要执行某些功能时需要调用协议中的方法。
今天就先写到这儿,第一篇学习笔记这么短。。。算了,万事开头难。明早还有事,得早点休息。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#使用委托(delegate)实现在两个form之间传递数据的方法
- Query中click(),bind(),live(),delegate()的区别
- 由点击页面其它地方隐藏div所想到的jQuery的delegate
- jQuery中delegate与on的用法与区别示例介绍
- JS delegate与live浅析
- jQuery事件 delegate()使用方法介绍
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- .NET笔记之:Delegate内部原理的分析
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- C#匿名方法与Delegate类型转换错误分析