setObject:ForKey:與setValue:ForKey:區別與聯繫

一: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異常;

相關文章
相關標籤/搜索