delegate介绍
delegation委托其实也是一种架构设计模式,主要是由一个委托对象委托给另一个对象去做它的工作。这里面需要用protocol协议实现,协议有requested必要方法,和option可选方法两种,协议提供编程接口,给调用者实现协议中的方法。
使用delegation的场景:
实现不同页面间的数据交互,可以用在页面跳转,界面传值,跳转页面刷新数据以及监听事件等等,当delegate的事件触发时,delegate才会被调用。
使用delegation的通用步骤:
- 首先要创建一个delegate对象,使用protocol协议定义需要委托的方法接口
- 然后委托者要在自身文件里要声明一个delegate对象
- 委托者回调delegate的协议方法(自身调用自身)
- 设置被委托者的delegate,用来被委托者调用协议方法(即delegate内的方法)
- 最后被委托者要实现delegate的协议方法,实现 delegate
使用delegate的几个注意点:
- 声明的delegate对象的属性要使用weak,用来防止循环引用,因为对象的delegate持有对象本身。
- 要检查@option方法有没有实现,使用respondToselector:
- 命名最好以delegate的类名开头,然后加上should,will,did
(委托方法通常包括3种动词:should、will、did
should表示一个动作发生前,通常带有返回值,可以在动作发生之前改变对象状态。
will在动作发生前,委托可以对动作做出响应,但不带有返回值。
did在动作发生后做出的响应。)