爆出这种错误,是因为不可变对象(NSArray或者NSDictionary等)调用了可变对象(NSMutableArray或NSMutableDictionary等对象)的方法而爆出了异常,
我在程序中在.h文件中定义了一个NSMutableArray对象的数组DataList,
然后在程序中,将NSUserefault对象赋值给了DataList,
而后来又用DataList调用了removeObjectAtIndex方法,
结果就报错了,后来调试,查找资料才发现,
原来NSUserDefault存储的都是不可变(immutable)的数据,
就算是我将可变的NSMutable对象存到NSUserDefault中,
后面读出来的DataList还是会变成NSArray类型
本文介绍了在使用NSUserDefault存储可变对象时遇到的问题。当试图从NSUserDefault中读取并修改可变对象如NSMutableArray时,程序会抛出异常。原因是NSUserDefault只能存储不可变对象,即使存储时提供了可变对象,读取时也会被转换为不可变形式。
2万+

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



