一:setObject:ForKey:與setValue:ForKey:存值區別與聯繫 spa
1.setObject:ForKey: 是NSMutableDictionary特有的;setValue:ForKey:是KVC的主要方法;code
2.setObject:ForKey:中object對象不能爲nil,否則會報錯;key的參數只要是對象就能夠,並侷限於NSString;setValue:ForKey:中Value值能夠爲nil,此時會自動調用removeObject:forKey:方法;key的參數只能是NSString類型; 對象
3.nil與null是不一樣的,[NSNull null]表示是一個空的對象,並非nil; rem
4.setValue:ForKey:是在NSObject對象中建立的,即全部的對象都有這個方法,能夠用於任何類(方法調用者是對象的時候);it
二:objectForKey:和valueForKey:取值區別與聯繫io
NSDictioary取值的時候有兩個方法,objectForKey:和valueForKey:(建議用objectForKey:)table
1.若key值不是以@符合開頭, 二者是相同的; class
2.若key值是以@開頭, 例如:@「@zhangcyKey」,則valueForKey:會去掉@,而後用剩下的部分執行[super valueForKey]; object
3.例子:sso
Person *person = [Person alloc] init]; person.name = @"Leo;
則經過:[person valueForKey:@「name」];取出的值是Leo。這是KVC的方法。
4.valueForKey:取值是找和指定key同名的property accessor(屬性訪問)沒有找到的時候執行valueForUndefinedKey:方法,而valueForUndefinedKey:方法默認是拋出crash異常;