У меня есть массив из 5 элементов, который также используется в качестве содержимого для таблицы. В nib - кнопка, которая изменяет содержимое массива на 5 разных элементов. Однако при нажатии этой кнопки приложение вылетает с EXC_BAD_ACCESS. Я установил точку останова на objc_exception _throw и подтвердил мои подозрения. Плохой методПри изменении массива DataSource TableView, сбой приложения
- (id)tableView:(NSTableView *)wordsTableView
objectValueForTableColumn:(NSTableColumn *)column
row:(int)rowIndex
{
return [[currentCard words] objectAtIndex:rowIndex];
}
currentCard является экземпляром класса GameCard, и его массив слов, является массив под вопросом. При первом запуске он работает нормально, но если я попытаюсь изменить его, то произойдет сбой.
---------- ---------- EDIT
В awakeFromNib AppController в: У меня есть этот
currentCard = [[GameCard alloc] init];
И в IBAction на кнопки, я есть это:
[currentCard release];
currentCard = [[GameCard alloc] init];
с зомби включен, когда я нажимаю кнопку, я получаю от этого GDB:
2009-06-22 18: 55: 03,368 2 5WordsMax [19761: 813] *** - [CFArray objectAtIndex:]: сообщение отправлено на освобожденный экземпляр 0x14ba00
ссылаясь на метод источника данных. Я пытался отслеживать ошибку памяти в течение нескольких часов, но я пропустил ее.
Я так разочарован я закомментирована каждый сохранить & релиз (без autoreleases) в коде и до сих пор получить 2009-06-22 19: 41: 58.564 25WordsMax [21765: 813] *** - [CFArray objectAtIndex:] : сообщение, отправленное на освобожденный экземпляр 0x14c330, когда я нажимаю кнопку.
И что вы называете методом источника данных? Я не звоню reloadData. Если в моем методе datasource я возвращаю @ «Word» для каждой строки, все работает нормально. В GDB я даже вижу, что мои NSLogs печатают содержимое нового массива, все без заминки. Только когда метод данных, рассматриваемый в вопросе, называется вызываемым, что возникают какие-либо проблемы.
разместить код, который изменяет слова массива. Скорее всего, вы делаете ошибку управления памятью там. –