KVO的實現原理及使用場景

2021-07-29 20:10:02 字數 557 閱讀 1481

kvo的實現原理:

當某個類的物件第一次被觀察時,系統就會在執行時動態地建立該類的乙個派生類,在這個派生類中重寫原類中被觀察屬性的

setter方法,

派生類在被重寫的

setter

方法實現真正的通知機制

(person->nskvonotifying_person).

派生類重寫了

class

方法以「欺騙」

外部呼叫者它就是起初的那個類。然後系統將這個物件的

isa指標指向這個新誕生的派生類,因此這個物件就成為該派生類的物件了,因而在該物件上對

setter

的呼叫就會呼叫重寫的

setter

,從而啟用鍵值通知機制。此外,派生類還重寫了

dealloc

方法來釋放資源。

kvo的使用場景:

1.實現上下拉重新整理控制項 

content offset

2.webview

混合排版 

content size

3.監聽模型屬性實時更新ui

KVO的實現原理

kvo的使用 標頭檔案 import hmperson.h void viewdidload 在物件被釋放的時候一定要移除監聽 void dealloc 當監控的某個屬性的值改變了就會呼叫 param keypath 屬性名 哪個屬性改了?param object 哪個物件的屬性被改了?param ...

KVO的實現原理

kvo是基於runtime機制實現的 當我們為乙個屬性新增觀察者模式之後,系統會利用runtime動態建立乙個繼承於屬性所在類的子類 nskvonotifying 為類名,並且讓例項物件的isa指向這個全新的子類,當修改例項物件時,會呼叫foundation框架的 nsset valueandnot...

RocketMQ 高階使用場景原理

producer生產訊息的過程 producer投送訊息的過程簡單來說,是首先找到這個topic對應的所有broker的queue,並按照投放策略,把訊息投放到對應的broker上的queue上。consumer消費訊息的過程同乙個消費者組,裡面的消費者,在進行消費的時候,比如消費的topic一共有...