NSMutableDictionary setObject 和setValue的区别

本文对比分析了setValue:forKey与setObject:forKey在NSMutableDictionary中的实现差异。setValue:forKey是KVC的一个分类扩展,当value为nil时会调用removeObject方法;而setObject:forKey则直接进行赋值操作,不处理nil值的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSMutableDictionary setObject 和setValue的区别

先上苹果官方APi定义

setValue是放在NSKeyValueCoding文件里,做了NSMutableDictionary针对KVC的一个分类扩展,这样专类专用的理解是对NSMutableDictionary特别针对KVC的适用延展,限定死key的类型必须为字符串类型,setValue实际也是调用字典的SetObject的方法,并当setObject为nil的时候会调用RemoveObject的方法,让这个nil的object从字典中移除。

setObject是放在NSDictionAry文件里,作为可变字典的一个API方法,调用对字典进行赋值,这里对setObject forKey中object和key都没有限定特定的类型,而是一个泛型。

Tip:实际使用中如无特定需求建议是使用setValue:forKey,setValue会针对value为nil的处理,setObject并不会对object为nil的处理,当setObejct为nil的时候会造成崩溃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值