setValue 和 setObject的区别

在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey

两者的区别

1, setObject:forkey:中value是不能够为nil的,不然会崩溃。

setValue:forKey:中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法

2, setValue:forKey:中key的参数只能够是NSString类型,而setObject:forKey:的可以是任何类型

上面说的区别是针对 NSMutableDictionary 而言的

setObject:forKey:方法NSMutabledictionary特有的,而 setValue:forKey:方法是KVC(键-值编码)的主要方法。

当 setValue:forKey:方法调用者是对象的时候:setValue:forKey:方法是在NSObject对象中创建的,也就是说所有的oc对象都有这个方法,所以可以用于任何类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天测试项目,无网络状态下进入,会出现崩溃,看了下崩溃原因: *** setObjectForKey: objec...
    Chau_Yue阅读 3,247评论 0 1
  • 在使用 NSMutableDictionary 的时候经常会使用 setValue: forKey: 与setOb...
    伯牙呀阅读 10,091评论 0 7
  • 扩展NSMutableDictionary的一个类别,上面注释说的很清楚,除非value为nil的时候,调用方法 ...
    小笨憨阅读 1,823评论 0 0
  • 1.两者的区别: setObject:forked:中object是不能够为nil的,不然会报错。 setValu...
    无悔zero阅读 4,580评论 0 0
  • 儿时在乡村,有门和没门一样。因为家家户户钥匙都在门框上放的,任何时候回家,踮起脚一摸钥匙,就可以开门。 几十年后的...
    果慧_631e阅读 3,273评论 6 5

友情链接更多精彩内容