它似乎是Objective-C上的一個幾乎新的超集,其中點符號與指令混合使用,例如:[email protected](...)
和合規性語法,例如:-replaceObjectIn<Key>AtIndex:withObject:
。似乎KVC的一大部分類似於簡單的訪問器方法,無論如何都可以進行合成。但是,我會說KVObserving似乎使MVC應用程序更容易。意見?KVC&KVO什麼時候值得麻煩?總是?
1
A
回答
4
鍵值編碼允許您查找任意嵌套的屬性,這些屬性的唯一身份只在運行時已知。例如,KVC不是person.name
的好替代品 - 對於這樣的特定任務來說,它是不必要的通用名稱。但是讓我們說,我們不知道我們什麼時候編寫我們的程序,我們是否想查找姓名,年齡或最喜歡的鞋品牌。我們經常使用NSTableView數據源來處理這類事情。我們可以寫一個大的,重複的條件送我們想要的消息,但KVC很容易:
return [personController.selectedPerson valueForKeyPath:desiredAttribute];
然後,我們可以設置desiredAttribute
到@"name"
,@"age"
或@"favoriteShoeBrand.name"
,我們將得到正確的值,甚至沒有分支儘管我們只知道我們在運行時需要的屬性。
它也很有用,因爲類可以以特殊方式處理KVC。例如,NSArray做的非常好。 [arrayOfPeople valueForKeyPath:@"name"]
不等於arrayOfPeople.name
- 相反,它將keypath傳遞給每個對象,並創建一個新數組,並使用這個數組的結果。所以它在許多其他語言中的作用與地圖功能的用途大致相同。還有特殊的KVC操作符,如@distinctUnionOfArrays
(它接受數組的集合並將它們合併在一起,忽略重複項),這使得對嵌套集合進行操作的方式比其他方式更加簡潔。
至於KVO,它只是一種在某些事情發生變化時得到通知的方式 - 例如,您可以在用戶的生日中更新您的用戶界面並使用新的年齡,而無需UI瞭解生日邏輯。如果這聽起來對你有用,你可能會喜歡它。
相關問題
- 1. 什麼時候實施IHttpAsyncHandler值得麻煩?
- 2. 傳遞CGColorRef作爲KVC/KVO中的值
- 3. 什麼時候jQuery.active值得到重置?
- 4. 什麼時候值得壓縮ViewState?
- 5. AEM表格 - 什麼時候值得?
- 6. 什麼是服務總線,我什麼時候需要一個?
- 7. 什麼時候是K 1024,什麼時候是1000?
- 8. 爲什麼和什麼時候值得使用指針指針?
- 9. 什麼時候返回空集合,什麼時候不是?
- 10. 什麼時候注入構造函數,什麼時候是CDI
- 11. 重構在什麼時候變得不值得?
- 12. 異常處理麻煩,爲什麼?
- 13. C++什麼參數的麻煩送
- 14. 新Highcharts.Chart創造麻煩。爲什麼?
- 15. 定時器麻煩。 。
- 16. 臨時表麻煩
- 17. 對象的值是什麼,什麼時候可以爲空?
- 18. 什麼時候變得關係
- 19. 什麼時候QLC效率低得多?
- 20. 什麼時候變得更好?
- 21. 什麼時候贏得Netfix獎?
- 22. KVC/KVO和綁定:爲什麼我只收到一個更改通知?
- 23. 在讀熊貓表的時候遇到了麻煩
- 24. jQuery動畫 - 什麼時候是異步的,什麼時候不是?
- 25. 什麼是mutableArrayValueForKey的KVC搜索模式?
- 26. 麻煩理解爲什麼這個值返回
- 27. 麻煩交際班值
- 28. 麻煩在jQuery中總成本html
- 29. 製作正確總和的麻煩
- 30. 爲什麼這個選擇 - 什麼時候測試總是正確的?