ios裡的KVO模式

2021-06-29 13:37:06 字數 982 閱讀 6866

ios

全稱: key value observing

在ios裡,可以新增觀察者模式,來實現某個property更改後,通知指定的類。

然後到observevalueforkeypath:ofobject:change:context:提供處理

1 [object addobserver: observer forkeypath: @"

frame

" options: 0 context: nil];

呼叫方法是裡:

object : 被觀察物件

observer: 觀察物件

forkeypath裡面帶上property的name,如uiview的frame、center等等

options: 有4個值,分別是:

nskeyvalueobservingoptionnew 把更改之前的值提供給處理方法

nskeyvalueobservingoptionold 把更改之後的值提供給處理方法

nskeyvalueobservingoptioninitial 把初始化的值提供給處理方法,一旦註冊,立馬就會呼叫一次。通常它會帶有新值,而不會帶有舊值。

nskeyvalueobservingoptionprior 分2次呼叫。在值改變之前和值改變之後。

注:例子裡的0就代表不帶任何引數進去

context: 可以帶入一些引數,其實這個挺好用的,任何型別都可以,自己強轉就好了。

處理方法裡:

keypath: 對應forkeypath

object:  被觀察的物件

change:  對應options裡的nskeyvalueobservingoptionnew、nskeyvalueobservingoptionold等

context: 對應context

iOS 模擬KVO的底層實現 手動實現KVO

一 回顧系統的kvo是怎麼實現監聽的 1.例項化乙個類 person person person alloc init person.age 11 2.開始監聽 person addobserver self forkeypath age options nskeyvalueobservingopt...

iOS之KVO模式的相關內容

1.複寫乙個方法,觀察到事件的發生 void observevalueforkeypath nsstring keypath 觀察的屬性 ofobject id object 被觀察者 change nsdictionary change 值得變化 context void context 2.引入...

iOS 底層實現 KVO

kvo是基於觀察者設計模式來實現的。觀察者模式 乙個目標物件管理所有依賴於它的觀察者物件,並在它自身的狀態改變時主動通知觀察者物件。這個主動通知通常是通過呼叫各觀察者物件所提供的介面方法來實現的。觀察者模式較完美地將目標物件與觀察者物件解耦。手動實現鍵值觀察 示例 被觀察的物件target 重寫se...