既然有了點方法為啥還要用valueForKey

2021-07-09 08:30:46 字數 739 閱讀 8503

請尊重原創,謝謝!

首先我們知道valueforkey可以用在類物件和內建基本資料型別

如nsdictionary最常用

那麼類物件裡有個點方法為何還要用此方法呢?

因為[obj setvalue:value forkey:keyname]是動態的,而obj.key=value是死的。

你可以nsstring *keyname=@"key";

但是obj.key 這個key卻只能寫死,而不能寫成變數。

比如我從服務端請求來乙個json格式的response,我希望直接將其轉換成相應的model。我定義了此model的類,宣告了跟服務端約定的屬性,此時我用一句setvalue:服務端得到的value forkey:服務端得到的key 能直接一一賦到model上,而不必這樣寫model.property=value;這樣寫的話如果有一百個屬性就要寫一百句話了。 所以

1.上述方法可以用於不曉得會有哪些key的情況下用。

2.而且對於 kvo 你監聽某個key的value變化了時可以輕易地與kvo的方式對應。**上更清晰地看出來到底是哪個key

3. 還有就是當乙個類並沒有屬性property而是有例項變數時,你無法使用點語法去設定它,只能用setvalue:forkey (也就是kvc的用法)

4. 如果乙個類的屬性property是宣告在.m裡,外界也是無法直接用點語法去訪問這個屬性的,而只能用valueforkey。因為不在.h裡~~~ 當做是私有的。

很不錯的文章。

有http了,為什麼還要用rpc?

http 和 rpc 並不是乙個並行概念。http是超文字傳輸協議,應用層網路協議。rpc不是協議,是指遠端過程呼叫,對不同應用間相互呼叫的一種描述。其呼叫協議通常包含傳輸協議和編碼協議 支援http和tcp rpc呼叫是面向服務的封裝,針對服務的可用性和效率等都做了優化。單純使用http呼叫則缺少...

有http 請求,為什麼還要用rpc呼叫?

這個回答裡恰巧講了一些rpc通訊協議的細節,但是強調一遍通訊協議不是rpc最重要的部分,不要被這個回答帶偏了。如果要了解rpc請更多的去了解服務治理 soa 的一些基本策略,推薦去看看dubbo的文件。這個問題其實是有理解誤區的,首先 http 和 rpc 並不是乙個並行概念。rpc是遠端過程呼叫,...

已經有 apt get,為什麼還要用 apt?

從 ubuntu 16.04 開始,乙個值得注意的新功能是 apt 命令的引入。事實上,apt 的第乙個穩定版本是 2014 年發布的,但是隨著 ubuntu 16.04 的發布,人們才開始注意到它。越來越多的人使用apt install package代替apt get install packa...