美文网首页程序员iOS Developer
NSMutableDictionary添加对象

NSMutableDictionary添加对象

作者: AlwaysBlue | 来源:发表于2016-02-16 17:09 被阅读5119次

@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

setValue forKey是在NSKeyValueCoding中

@interfaceNSMutableDictionary :NSDictionary

- (void)removeObjectForKey:(KeyType)aKey;

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

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添加对象

    本文链接:https://www.haomeiwen.com/subject/hjgpkttx.html