KVO 觀察者模式通過ios中通過NotificationCenter來實(shí)現(xiàn)一對(duì)多的依賴關(guān)系 當(dāng)被觀察者發(fā)生變化時(shí) 會(huì)通知觀察者?
NotificationCenter相較于delegate 和block 優(yōu)點(diǎn)在于很大程度上避免了頁面之中的循環(huán)引用的問題并且 可以讓你輕松的跨層傳遞信息
Each running app has a default?notification center, and you can create new notification centers to organize communications in particular contexts.
每一個(gè)于行的app都有一個(gè)默認(rèn)的notificationCenter (NotificationCenter.default)
1.關(guān)于監(jiān)聽者
通過addObserver(_:selector:name:object:) 或addObserver(forName:object:queue:using:)注冊(cè)一個(gè)監(jiān)聽者 (由于使用了不安全引用(unsafe reference)和弱引用 (weak reference) ?在iOS 9以后不需要手動(dòng)移除通知)但使用addObserver(forName:object:queue:using:)添加的通知 由于使用的是strong 所以依舊需要手動(dòng)在通知中心中移除
所有注冊(cè)了監(jiān)聽的對(duì)象都會(huì)在通知發(fā)送的時(shí)候 收到響應(yīng)的通知
2.發(fā)送通知
通過post(name:object:userInfo:) 或?post(name:object:)來發(fā)送通知 發(fā)送的通知是可以通過object傳遞參數(shù) 響應(yīng)的在添加監(jiān)聽者時(shí) 也可以通過object來接受post過來的參數(shù)
3.舉個(gè)栗子
言簡(jiǎn)意賅地賣個(gè)代碼萌