NSMutableDictionary添加对象

@interfaceNSMutableDictionary(NSKeyValueCoding)

/* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObjectForKey:.
*/
- (void)setValue:(nullable ObjectType)value forKey:(NSString*)key;
@end

NSMutableDictionary添加对象_第1张图片
setValue forKey是在NSKeyValueCoding中

@interfaceNSMutableDictionary :NSDictionary

- (void)removeObjectForKey:(KeyType)aKey;

- (void)setObject:(ObjectType)anObject forKey:(KeyType )aKey; (其中两个参数的类型都是nonnull,第二个参数是id)

NSMutableDictionary添加对象_第2张图片
setObject forKey是在NSDictionary中

在给NSMutableDictionary赋值时,两种方式是不一样的。最直观的是
1.setValue的第一个参数是nullable,也就是可为nil的。如果是nil的话,便会执行removeObjectForKey。而setObject是不能为nil的,如果是nil便会崩溃。(此处特别指出是nil,nil是一个连对象都没有的,因为还可以是NSNull 它表示一个值为空的对象。NSNull null是有一个有效的内存地址的)
nil Nil NSNull NULL
2.setValue的key只能是字符串,setObject的key是实现NSCopying协议的对象即可(如NSNumber)

另一个本质区别是:

setObject forKey是NSMutableDictionary独有的
setValue forKey是KVC(键值编码)的主要方法

后续写篇KVC KVO文章

最后,推荐一个我自己的产品,找到我啦,可查看轨迹和定位,欢迎关注我的微信公众号,时刻关注找到我啦的更新


NSMutableDictionary添加对象_第3张图片

你可能感兴趣的:(NSMutableDictionary添加对象)