监听事件的五种方式:
1、代理
2、block
3、通知
4、kvo键值观察
5、最常见也最容易忽略的 addTarget,如图
小结
使用代理传递消息是为了在控制器和视图之间解藕,让视图能够被多个控制器复用,例如
UITableView
但是,如果视图仅仅只是为了封装代码,而从控制器中剥离出来的,并且能够确认该视图不会被其他控制器引用,则可以直接通过
addTarget
的方式为该视图中的按钮添加监听方法这样做的代价是耦合度高,控制器和视图绑定在一起,但是会省略部分冗余代码
代理的使用
swift
中代理的使用基本与 OC 相同需要注意的是,定义协议时,需要继承自
NSObjectProtocol
代理属性需要使用
weak
防止出现循环引用