1. 程式人生 > >鍵值編碼KVC

鍵值編碼KVC

進行 調用 優先 setvalue define 變量 OS fork 規則

  • 動態設置:setValue:屬性值 forKey:屬性名用於簡單路徑;setValue:屬性值 forKeyPath:屬性路徑用於復合路徑,例如Person有一個Account類型的屬性,那麽person.account就是一個復合屬性

  • 動態讀取:valueForKey:屬性名、valueForKeyPath:屬性名

[person1 setValue:@"llx" forKey:@"name"];
[person1 setValue:@100000000.0 forKeyPath:@"account.balance"];

KVC讀取屬性的查找規則

假設現在要利用KVC對a屬性進行讀取。

如果是動態設置屬性,則優先考慮調用setA方法。如果沒有該方法則優先考慮搜索成員變量_a,如果仍然不存在則搜索成員變量a,如果最後仍然沒有搜索到這會調用這個類的setValue:forUndefinedKey:方法。在搜索過程中,不管這些方法、成員變量是私有還是公共的都能正確設置。

如果是動態讀取屬性,則優先調用a的getter方法,如果沒有搜索到則會優先搜索成員變量_a,如果仍然不存在則會搜索成員變量a,如果仍然沒搜索到就會調用這個類的valueforUndefinedKey:方法。而且,在搜索過程中,不管這些方法、成員變量是私有的還是公有的都能正確讀取。

鍵值編碼KVC