最近发现写学习笔记是一件非常重要的事情,可以复习自己最近一段时间的收获,于是决定从现在起写自己的博客,可能对别人来说并没有什么用,忘见谅。废话不多说,直入正题。
前段时间看别人的代码发现自己对委托和协议并不算理解了,于是又在网上学习了一下,理解了个大概。委托(Delegate)顾名思义就是将一件事情拿给别人去办,在oc里就是一个类让另外一个类执行一个方法(不知道说得对不对)。例如有一个classA类,包含一个print方法,然后有一个classB,包含一个成员变量classA,然后classB想执行print方法,但是classB并没有print方法,于是要交给classA执行,所以我们调用如下语句[b.a print];就能达到执行print方法的目的。
协议(protocol)一般是实现委托时采用的方法,所谓协议就是一种约束,定义一个协议,里面有若干方法但是并未实现,遵循了此协议的类必须实现该协议当中必须实现的方法。协议有什么用呢?协议能在类之间传递消息,能更好的实现委托。委托存在一个问题,就是一个类怎么才能知道另一个类具有它所需要的方法呢?此时协议就派上用场了。当一个类实现了另一个类中所定义的协议后,另一个类就知道这个类具有自己所需要的方法,从而防止了出错。这在uikit中是经常用到的。例如在UITableView中有一个UIViewDelegate,当一个UIViewController中包含了UItableView时这个ViewController也必须实现UIViewDelegate,因为当UITableView要执行某些功能时需要调用协议中的方法。
今天就先写到这儿,第一篇学习笔记这么短。。。算了,万事开头难。明早还有事,得早点休息。