KVC vs KVO(內容為轉載記錄,整合大家的總結為我所用),kvckvo

來源:互聯網
上載者:User

KVC vs KVO(內容為轉載記錄,整合大家的總結為我所用),kvckvo

KVC即key-value coding的縮寫, 

KVO即key-value observing的縮寫

假如需要掌握Key-Value Observing機制,那麼需要閱讀本文應該有協助。本文提供了Key-Value Observing的一個概述,並且解釋為什麼需要用它,什麼時候用它。在閱讀本文之前需要對Key-Value Observing需要有一個基本的瞭解。

Key-Value Observing機制的概述

Key-Value Observing (簡寫為KVO):當指定的對象的屬性被修改了,允許對象接受到通知的機制。每次指定的被觀察對象的屬性被修改的時候,KVO都會自動的去通知相應的觀察者。

KVO的優點

當有屬性改變,KVO會提供自動的訊息通知。這樣的架構有很多好處。首先,開發人員不需要自己去實現這樣的方案:每次屬性改變了就發送訊息通知。這是KVO機制提供的最大的優點。因為這個方案已經被明確定義,獲得架構級支援,可以方便地採用。開發人員不需要添加任何代碼,不需要設計自己的觀察者模型,直接可以在工程裡使用。其次,KVO的架構非常的強大,可以很容易的支援多個觀察者觀察同一個屬性,以及相關的值。

KVO如何工作

需要三個步驟來建立一個屬性的觀察員。理解這三個步驟就可以知道KVO如何設計工作的。

 

(1)首先,構思一下如下實現KVO是否有必要。比如,一個對象,當另一個對象的特定屬性改變的時候,需要被通知到。

例如,PersonObject希望能夠覺察到BankObject對象的accountBalance屬性的任何變化。 

 

(2)那麼PersonObject必鬚髮送一個“addObserver:forKeyPath:options:context:”訊息,註冊成為BankObject的accountBalance屬性的觀察者。

(說明:“addObserver:forKeyPath:options:context:”方法在指定對象執行個體之間建立了一個串連。注意,這個串連不是兩個類之間建立的,而是兩個對象執行個體之間建立的。)

 

(3)為了能夠響應訊息,觀察者必須實現“observeValueForKeyPath:ofObject:change:context:”方法。這個方法實現如何響應變化的訊息。在這個方法裡面我們可以跟自己的情況,去實現應對被觀察對象屬性變動的相應邏輯。

 

(4)假如遵循KVO規則的話,當被觀察的屬性改變的話,方法“observeValueForKeyPath:ofObject:change:context:”會自動被調用。

 

後記:本文提供的只是KVO的一個簡要概述。KVO很強大很靈活,所以還有很多細節,如自動和手動索引值觀察,或一對多和一對一的關係

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.