首先,setValue:forKey 会调用 setObejct:forKey: ,但有一个例外就是当 setObejct:forKey: 的value为nil的时候,会去调用 removeObjectForKey: ,也就是说会删除该key对应的value,
setObject:forKey 这货的key只要不是nil就行,存储在dict里的只是对象的引用。
setValue:forKey这货的key必须是string,看样子dict会复制整个value保存起来。
两者的区别:
(1)setObject:forkey:中value是不能够为nil的;setValue:forKey:中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法
(2)setValue:forKey:中key只能够是NSString类型,而setObject:forKey:的可以是任何类型
(1)setObject:forkey:中value是不能够为nil的;setValue:forKey:中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法
(2)setValue:forKey:中key只能够是NSString类型,而setObject:forKey:的可以是任何类型
(3)
setObject:forkey:中value是不能够为nil的,不然会报错。
setValue与setObject在Objective-C中的区别
本文探讨了Objective-C中setValue:forKey与setObject:forKey两种方法的区别,前者允许nil值并自动调用removeObject:forKey方法进行删除操作,后者不允许nil值。此外还对比了两者对于key类型的限制。
40

被折叠的 条评论
为什么被折叠?



