Без кода будет действительно трудно найти проблему.
Происходит ли сбой на реальном устройстве, на симуляторе или на обоих? Вы сохраняете / распределяете и освобождаете объект вручную или он входит в пул автоматического выпуска?
Как правило, проверьте методы viewDidUnload
, viewWillDisappear
, didReceiveMemoryWarning
и убедитесь, что все, что вы выпускаете, воссоздано соответствующими методами.
Если вы используете этот массив в нескольких контроллерах представления, не забудьте сохранить и освободить его в каждом контроллере представления в соответствующих точках.
Один из способов выяснить, кто освобождает массив:
Создание подкласса NSMutableArray
@interface myNSMutableArray : NSMutableArray {}
@end
@implementation myNSMutableArray
-(oneway void)release {
NSLog(@"Being released");
NSLog(@"retainCount: %i", [self retainCount]);
[super release];
}
@end
Измените тип вашего тайного массива на myNSMutableArray
, добавьте точку останова после 2 строк NSLog, и когда отладчик прибудет в точку останова, попросите GDB для возврата (команда bt
).