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