當我第一次使用這個方法時,它工作正常,但是當我第二次調用它時,我得到錯誤「mutating method sent to immutable object」。問題符合「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];
}
那麼問題是與地方的初始化。我敢打賭,NSUserDefault標準第一次是空的,並進入第二次初始化。你也有內存泄漏。 – Radu 2011-04-26 13:06:35
請注意,您可能只能用'tagF.text'替換'[NSString stringWithFormat:@「%@」,tagF.text]'。如果'text'已經是'NSString',則不需要發送'+ stringWithFormat:'。 – 2011-04-26 23:21:00