NSUserDefault、NSMutableDictionary的setValue和setObject区别

NSDictionary:        setValue: forKey:@""

NSMutableDictionary: setObject: forKey:@""   value是不能够为nil的,不然会报错。
                                             setObject:forKey:的key可以是任何类型
                     setValue: forKey:@""    value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法
                                             setValue:forKey:中key的参数只能够是NSString类型

                                             另外这两个方法 set动态数组是没有问题的,但会变成不可变的
NSUserDefault:      setObject: forKey:@""
                     setValue: forKey:@""

//问题可以从NSUserDefault中取出可变字典吗?不可以,即使存储上去也会变成不可变的
//1.存储类型:
//NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL。
//2.NSUserDefaults不能存储可变类型(如:NSMutableArray、NSMutableDictionary)
原文地址:https://www.cnblogs.com/imChay/p/5583449.html