一:setObject:ForKey:與setValue:ForKey:的區(qū)別與聯(lián)系
1.setObject:ForKey:是NSMutableDictionary特有的;
setValue:ForKey:是KVC的主要方法娃属;
2.setObject:ForKey:中object不能為nil兰珍,不然會報錯
嫡丙;key的參數(shù)只要是對象就可以蛾派,不局限于NSString
煤墙;
setValue:ForKey:中Value可以為nil痢甘,此時會自動調(diào)用removeObject:forKey:方法距误;key的參數(shù)只能是NSString類型
簸搞;
3.nil與null不同,[NSNull null]表示是的一個空的對象准潭,并不是nil趁俊;
4.setValue:ForKey:是在NSObject對象中創(chuàng)建的,即所有的對象都有這個方法刑然,可以用于任何類寺擂;(方法調(diào)用者是對象的時候)
二:objectForKey:和valueForKey:
NSDictioary取值的時候有兩個方法,objectForKey:和valueForKey:
(建議用objectForKey:)
1.若key不是以@符合開頭泼掠,兩者相同
怔软;
2.若key是以@開頭
,例如:@“@hhisIsKey”择镇,則valueForKey:會去掉@挡逼,然后用剩下的部分執(zhí)行[super valueForKey];
3.例子:Person *person = [Person alloc] init];
person.name = @“Chen”;
則通過:[person valueForKey:@“name”];取出的就是:Chen腻豌。這是KVC的方法家坎。
4.valueForKey:取值是找和指定key同名的property accessor(屬性訪問)嘱能,沒有找到的時候執(zhí)行valueForUndefinedKey:,而valueForUndefinedKey:默認(rèn) 是拋出crash異常虱疏;