//KVC key valve coding (鍵值編碼)
//優(yōu)點(diǎn):不用set .get方法給成員變量{}賦值;間接給屬性賦值;減少代碼量.封裝model類
//缺點(diǎn):編譯時不報錯,運(yùn)行時報錯
//使用的時候,注意key不要寫錯
//1.
//如果輸出id類型的數(shù)據(jù),需要用%@,占位符
//測試kvc是先訪問帶下劃線的屬性,如果沒有才訪問不帶下劃線的屬性
//如果鍵寫錯了,編譯時不報錯,運(yùn)行時報錯
//2.
//間接給屬性賦值
//car是people的屬性
//name是car的屬性
//car需要在people類中初始化
///forKeyPath是關(guān)鍵
//使用valueForKeyPath的時候需要初始化car
//3.
//如果字典中存在該類不存在的屬性,要去類的.m中重寫不然運(yùn)行會崩潰
//重寫系統(tǒng)的方法(對于多出來的鍵值對,運(yùn)行時才不會崩潰)
//- (void)setValue:(id)value forUndefinedKey:(NSString *)key
//對于屬性多的model,可批量處理,給屬性賦值,減少代碼量
//在.m賦值時可調(diào)用該方法[self setValuesForKeysWithDictionary:dic];
//4.
//copy和retain的區(qū)別
//copy的話,輸出不會一致只是copy路徑和數(shù)據(jù),不會隨之更新內(nèi)容(深)
//retain的話,輸出的內(nèi)容是一致會隨著賦值屬性內(nèi)容的改變而改變(淺)
//00000
//如果同時實現(xiàn)了set,get方法,需要在{}中聲明_name屬性
//成員變量沒有實現(xiàn)set,get方法,所以不會調(diào)用
//以kvc的方式給屬性name賦值,會調(diào)用set,get方法