日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS之深入解析KVO的底层原理

發布時間:2024/5/28 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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。<
與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的iOS之深入解析KVO的底层原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。