iOS之深入解析KVO的底层原理
生活随笔
收集整理的這篇文章主要介紹了
iOS之深入解析KVO的底层原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、KVO 簡介
① 概念
- KVO 全稱 Key Value Observing,是蘋果提供的一套事件通知機制,允許對象監聽另一個對象特定屬性的改變,并在改變時接收到事件。
- 由于 KVO 的實現機制,所以對屬性才會發生作用,一般繼承自 NSObject 的對象都默認支持 KVO。
- KVO 和 NSNotificationCenter 都是 iOS 中觀察者模式的一種實現,區別在于,相對于被觀察者和觀察者之間的關系,KVO 是一對一的,而 NSNotificationCenter 是一對多的,KVO 對被監聽對象無侵入性,不需要修改其內部代碼即可實現監聽。
- KVO 可以監聽單個屬性的變化,也可以監聽集合對象的變化。通過 KVC 的 mutableArrayValueForKey: 等方法獲得代理對象,當代理對象的內部對象發生改變時,會回調 KVO 監聽的方法。
② 使用
- 使用 KVO 分為三個步驟:
- 通過 addObserver:forKeyPath:options:context: 方法注冊觀察者,觀察者可以接收 keyPath 屬性的變化事件;
- 在觀察者中實現 observeValueForKeyPath:ofObject:change:context: 方法,當 keyPath 屬性發生改變后,KVO 會回調這個方法來通知觀察者;
- 當觀察者不需要監聽時,可以調用 removeObserver:forKeyPath: 方法將 KVO 移除。需要注意的是,調用 removeObserver 需要在觀察者消失之前,否則會導致 Crash。<
總結
以上是生活随笔為你收集整理的iOS之深入解析KVO的底层原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS之深入解析KVC的底层原理和自定义
- 下一篇: iOS之深入解析weak关键字的底层原理