在使用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(键-值编码)的主要方法。