Повторно используемый код для чтения из файла вызывает EXC_BAD_ACCESS только во втором классе - PullRequest
1 голос
/ 23 ноября 2011

Я использую этот код в двух разных файлах, чтобы заполнить массив categories из строки текста из текстового файла, в котором записи разделены двойными каналами.

В первом файле моего appViewController класса все нормально.Во втором, popoverViewController, программа бомбит EXC_BAD_ACCESS в строке arrayWithArray:.Объявления для categories, tempArray, diskfile и textFromFile одинаковы в обоих интерфейсных файлах.

NSLog значения, подтвержденные трассировщиками и точками останова, одинаковы вплоть до последней фатальной строки.Всплывающее окно содержит средство выбора, так что протоколы средства выбора и источники данных находятся на месте.Это единственная разница.Кто-нибудь может объяснить, что может происходить?

categories=[[NSMutableArray alloc] init];

tempArray = [[NSMutableArray alloc] init] ;

NSMutableString *textFromFile=[[NSString alloc] init];  

NSString *filePath = [[NSBundle mainBundle] pathForResource: @"Categories" ofType: @"txt"];

if (filePath) {
  textFromFile = [NSString stringWithContentsOfFile:filePath];

  categories=[NSMutableArray arrayWithArray:[textFromFile componentsSeparatedByString: @"||"]];
}   

1 Ответ

3 голосов
/ 23 ноября 2011

Установить NSZombieEnabled , MallocStackLogging и guard malloc в отладчике. Затем, когда ваше приложение падает, введите в консоли gdb:

(gdb) info malloc-history 0x543216

Замените 0x543216 адресом объекта, вызвавшего сбой, и вы получите гораздо более полезную трассировку стека, которая поможет вам точно определить строку в коде, которая вызывает проблему.

См. Эту статью для более подробных инструкций.

...