У меня есть NSMutableArray, сохраненный с помощью NSUserDefaults. Этот массив - мои «любимые» элементы, которые пользователь может сохранить, поэтому, когда я хочу добавить один элемент, мне нужно прочитать массив (из NSuserDefault) и сохранить его в первой свободной позиции.
Я использую этот метод добавить значение в NSMutableArray
-(IBAction)save{
NSMutableArray *abc = [[NSUserDefaults standardUserDefaults] objectForKey:@"12345"];
int n = [abc count];
[abc insertObject:@"aaa" atIndex:n];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[[NSUserDefaults standardUserDefaults] setObject:abc forKey:@"12345"];
[defaults synchronize];
[abc release];
}
в чем дело? Что, если пользователь вызовет этот метод два раза, во второй раз произойдет сбой приложения с этим журналом:
* Завершение работы приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «- [__ NSCFArray insertObject: atIndex:]: мутирует метод отправлен в неизменяемый объект »
почему? а почему только второй раз? Первый раз работает нормально!