-Key Value Coding是cocoa的一個標準組成部分,它能讓我們可以通過name(key)的方法訪問property,不必調(diào)用明確的property accuser;
-KVC(鍵-值編碼)是一個用于間接訪問對象屬性的機制(一種使用字符串而不是訪問器方法去訪問一個對象實例變量的機制。)使用該機制不需要代用set或者get方法及->來訪問成員變量,它是通過setValue:forKey:和valueForKey:方法。
-KVC是以字符串的形式向對象發(fā)送消息,字符串是要關注屬性的關鍵;是夠 存在setter、getter方法,如果不存在,它將在內(nèi)部查找名為_key或key的實例變量,如果沒有報錯;
注意:如果基本數(shù)據(jù)類型,則需要封裝一下;
KVC的優(yōu)缺點:①主要的好處就是減少代碼量②沒有property的變量(private)也能通過KVC來設置。
-KVC的缺點:如果key寫錯時,編寫時不會報錯,運行時會報錯。
-KVO:KVO是一個對象能夠觀察另外一個對象的屬性的值,并且能夠發(fā)現(xiàn)值的變化。前面兩種模式更加適合一個controller與任何其他的對象進行通信,而KVO更加適合任何類型的對象偵聽另外一個對象的改變(這里也可以是controller,但一般不是controller).這是一個對象與另外一個對象保持同步的一種方式,即當另外一種對象的狀態(tài)發(fā)生改變時,觀察對象馬上做出反應.它只能用來對屬性做出反應,而不會用來對方法或者動作做出反應.
-KVO的優(yōu)點:①能夠提供一種簡單的方法實現(xiàn)兩個對象間的同步,例如:model和view之間同步;②能夠對我們創(chuàng)建的對象,即內(nèi)部對象的狀態(tài)改變做出反應,而且不需要改變內(nèi)部對象(SKD)的實現(xiàn);③能夠提供觀察的屬性的最新值以及先前值④用key paths來觀察屬性,因此也可以觀察嵌套對象;⑤完成了對觀察對象的抽象,因為不需要額外的代碼來允許觀察值能夠被觀察。
-KVO缺點:①我們觀察的屬性必須使用strings來定義 。因此編譯器不會出現(xiàn)警告以及檢查②對對屬性重構將導致我們的觀察代碼不再可用③復雜“if”語句要求對象正在觀察多個值。這是因為所有的觀察代碼通過一個方法來指向④當釋放觀察者時不需要一處觀察者。
-KVO的使用:被觀察者發(fā)出addObserver:foreKeyPath:option:context:方法來添加觀察者。然后只要被觀察者的keyPath值發(fā)生變化(注意:單純改變其值不會調(diào)用此方法,只有通過getter和setter來改變值才會觸發(fā)KVO),就會調(diào)用方法observeValueForKeyPath:ofObject:change:context:因此觀察者需要實現(xiàn)方法。
observerValueForKeyPath:ofObject:change:context:來對KVO發(fā)出的通知做出響應。
這些代碼都只需在觀察者里進行實現(xiàn),被觀察者不用添加任何代碼,所以誰要監(jiān)聽停水注冊,然后對響應進行處理即可,使得觀察者與被觀察者完全解耦,運用很靈活很簡便;但是KVO只能檢測類中的屬性,并且屬性名都是通過NSString 來查找,編譯器不會幫你檢錯和補全,純手敲比較容易出錯。
KVC和KVO的理解
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- KVC/KVO 概念 KVC : 即 Key-Value-Coding,用于鍵值編碼。作為 cocoa 的一個標準...
- KVC(Key-value coding)鍵值編碼,單看這個名字可能不太好理解。其實翻譯一下就很簡單了,就是指iO...
- 1.KVC 關于 KVC 和 KVO ,我之前的總結文章有寫過,但是趨于表面,沒有探究其內(nèi)部真正的實現(xiàn)原理和進階用...
- 代碼下載 代碼下載地址 前言 最近找工作,很多單位都需要掌握Swift這門語言,發(fā)現(xiàn)Swift將是大勢所趨??!自己...