На этом этапе четыре умных человека (не считая меня) указали, что вы отправляете -removeObjectAtIndex:
объекту, который считает, что это неизменный массив.Сейчас самое время задуматься о , почему массив неизменен, если вы ранее думали, что он изменчив.Если вы опубликуете некоторый код, который показывает, как создается массив, кто-то здесь, вероятно, сможет показать вам, что происходит не так.
Один из способов, которым вы можете получить неизменяемый массив, когда вы думали, что у вас изменяемыйОдним из них является копирование изменяемого массива.Например, у вас может быть свойство:
@property (copy) NSMutableArray *myArray;
Возможно, вы затем создаете изменяемый массив, добавляете несколько объектов и присваиваете его свойству:
NSMutableArray *tempArray = [NSMutableArray array];
[tempArray addObject:@"You say goodbye"];
[tempArray addObject:@"I say hello"];
self.myArray = tempArray;
Теперь, делает ли tempArrayуказывают на изменяемый массив или неизменный массив?Я недавно не проверял, но я уверен, что вы получите неизменный массив.Вы обязательно получите immutableArray, если скажете:
NSMutableArray *foo = [tempArray copy];
Итак, начните искать места в вашем коде, где указатель массива переназначается.В конце концов, если бы ваш указатель действительно указывал на изменяемый массив, было бы ужасно трудно объяснить исключение, которое вы получаете.