写了个 保存搜索关键字的 方法,竟然出现了如题所说的 crash ,从语意上看大概是这样的: 给一个不是mutable的对象发送了 mutable 的方法
方法如下:
+(void) setUserSearchDynamicKeyWord:(NSString *)strKeyWord
{
NSMutableArray * searchArray = [[NSUserDefaults standardUserDefaults] objectForKey:STR_SEARCH_DYNAMIC_ARRAY];
if (searchArray == nil)
{
searchArray = [NSMutableArray array];
}
[searchArray addObject:strKeyWord];
[[NSUserDefaults standardUserDefaults] setObject:searchArray forKey:STR_SEARCH_DYNAMIC_ARRAY];
[[NSUserDefaults standardUserDefaults] synchronize];
}
可以确定 searchArray 肯定是 NSMutableArray ,那么为什么还是会说给NSMutableArray不是一个mutable 对象呢?
网上是说从NSUserDefault 返回的对象都是固定的,不能修改。具体原因未知,先记录在这,留着后面再研究研究。