ios – 变异方法发送到不可变对象

当我使用这种方法第一次它工作正常,但是当我打电话第二次我得到错误“mutating方法发送到不可变对象”.问题符合“addobject”的命令.
-(IBAction) save: (id) sender{

NSMutableArray *placesT= [[NSUserDefaults standardUserDefaults] objectForKey:@"placesT"];

if (!placesT) {
    placesT=[[[NSMutableArray alloc] init] autorelease];
}

[placesT addobject: [Nsstring stringWithFormat:@"%@",tagF.text] ];

NSUserDefaults *tUD=[NSUserDefaults standardUserDefaults];
[tUD setobject:placesT forKey:@"placesT"];
[tUD synchronize];

[self dismissModalViewControllerAnimated:YES];

}

解决方法

由于NSUserDefaults的文档说:“从NSUserDefaults返回的值是不可变的,即使您将可变对象设置为该值.每当你想要更改从NSUserDefaults得到的集合,你必须获得不变版本,做一个mutablecopy,修改它,然后重新设置.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...