在使用NSMutableDictionary的時候經常會使用
setValue: forKey:
與setObject: forKey:
,他們經常是可以交互使用的,代碼中經常每一種的使用都有.
1.setValue: forKey:
的定義
@interface NSMutableDictionary(NSKeyValueCoding)
/* Send -setObject: forKey: to the receiver, unless the value is nil , in which case send - removeObject: forKey:
*/
- (void)setValue:(id)value forKey:(NSString *)key;
@end
譯: 擴展NSMutableDictionary的一個類別,發送setObject: forKey:
給接收者,也就是調用setObject: forKey
方法
除非value為nil的時候,調用方法removeObject: forKey:
2. setObject: forKey: 的定義
@interface NSMutableDictionary :NSDictionary
- (void)removeObjectForKey:(id)aKey;
- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
@end
注意:setObject: forKey:
中Key的對象是一個id類型,并不是NSString,只是我們經常使用的是NSString
3.總結
1.setObject: forKey:
中的value是不能夠為nil的,不然會報錯
setValue: forKey:
中的value可以為nil ,當value為nil 的時候,會自動調用removeObject: forKey
方法
2.setValue: forKey:
中的key的參數只能是NSString類型,而setObject: forKey:
的可以是任何類型
3.上面所說的區別是針對調用者是dictionary而言的。
setObject: forKey:
方法NSMutableDictionary特有的,
setValue: forKey:
方法是KVC(鍵-值編碼)的主要方法。