NotificationCenter

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

你可能感兴趣的:(NotificationCenter)