KVO 观察者模式通过ios中通过NotificationCenter来实现一对多的依赖关系 当被观察者发生变化时 会通知观察者
NotificationCenter相较于delegate 和block 优点在于很大程度上避免了页面之中的循环引用的问题并且 可以让你轻松的跨层传递信息
Each running app has a default notification center, and you can create new notification centers to organize communications in particular contexts.
每一个于行的app都有一个默认的notificationCenter (NotificationCenter.default)
1.关于监听者
通过addObserver(_:selector:name:object:) 或addObserver(forName:object:queue:using:)注册一个监听者 (由于使用了不安全引用(unsafe reference)和弱引用 (weak reference) 在iOS 9以后不需要手动移除通知)但使用addObserver(forName:object:queue:using:)添加的通知 由于使用的是strong 所以依旧需要手动在通知中心中移除
所有注册了监听的对象都会在通知发送的时候 收到响应的通知
2.发送通知
通过post(name:object:userInfo:) 或 post(name:object:)来发送通知 发送的通知是可以通过object传递参数 响应的在添加监听者时 也可以通过object来接受post过来的参数
3.举个栗子
言简意赅地卖个代码萌
不知道怎么插入代码.png
网友评论