iOS NSMutableDictionary setValue和setObject区别

    xiaoxiao2022-07-02  88

    一直以来两个都用,但是没有区分过,基本都是处理字符串。今天整理下异同,以后写代码也能开拓思路,优化算法。

    1、setValue

    /* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObjectForKey:. */ - (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

    最新回复(0)