KVC是一種訪問一個對象屬性的方法 即是指NSKeyValueCoding
訪問一個對象屬性我們可以 person.age? 也可以通過kvc的方式? [person valueForKey:@"age"];? 假如給出的字符串沒有對象的屬性 會訪問valueForUndefineKey方法 默認實現是raise 一個異常 但你可以重寫這個方法,? setValue的時候也是一樣的道理,當然KVC只是這么簡單它還有keypath方法
key 與 key pat 要區分開來,key 可以從一個對象中獲取值,而 key path 可以將多個 key 用點號 “.” 分割連接起來,比如:
[p valueForKeyPath:@"spouse.name"];
相當于這樣……
[[p valueForKey:@"spouse"] valueForKey:@"name"];
KVO 就是基于 KVC 實現的關鍵技術之一,它的實現原理就是,當對象的屬性被修改時候,KVO就會自動向所有實施監聽的對象發送一個通知