一直以来两个都用,但是没有区分过,基本都是处理字符串。今天整理下异同,以后写代码也能开拓思路,优化算法。
1、setValue
- (void)setValue
:(nullable ObjectType
)value forKey
:(NSString
*)key
;
value: 值为一个对象,可以为空nil。也就是说不光可以保存字符串,还可以是nsnumber,nsarray,viewcontroller等等,只要是对象都可以;如果为nil,则自动调用方法:
- (void)removeObjectForKey
:(KeyType
)aKey
;
key: key的值只能是字符串。
2、setObject
- (void)setObject
:(ObjectType
)anObject forKey
:(KeyType
<NSCopying
>)aKey
;
anObject: 值为一个对象,但是不能为空; aKey: 值为一个对象,不止可以用字符串,使用自定义对象时要遵守协议并实现(id)copyWithZone:(NSZone *)zone。
参考: 1、setValue和setObject的区别 2、iOS开发:泛型是什么意思 3、iOS NSDictionary除了NSString 类型外还有什么类型可以作为key