Последний элемент NSMutablearray поврежден и становится стандартным NSObject из пользовательского объекта - PullRequest
0 голосов
/ 15 февраля 2012

Сегодня я столкнулся со странной проблемой с NSMutableArray.Я анализирую XML-файл и добавляю проанализированные элементы в качестве пользовательских объектов.Всего 37 предметов.Итак, когда мой взгляд загружается, я сделал это в качестве теста:

[parser loadDataBase];
ProductItem* item = [parser.productDetail.prodItems objectAtIndex:36];
NSLog(@"test 1 %@", item.idItem);
self.product = parser.productDetail;
item = [self.product.prodItems objectAtIndex:36];
NSLog(@"test 2 %@", item.idItem);
[parser release];

На данный момент все работает просто отлично.Оба NSLog выводят правильное значение для последнего элемента в изменяемом массиве.

Проблема в том, когда я пытаюсь добавить эти элементы в таблицу.Когда приложение пытается получить элемент по индексу 36, чтобы отобразить его свойства, вместо пользовательского объекта ProductItem, оно получает объект NSObject ... для последнего элемента все потеряно и заменяется простым NSObject.

Я абсолютно ничего не делаю с массивом этого класса или любым другим классом, кроме парсера.Все в порядке, когда он покидает анализатор, все в порядке, когда я читаю его из анализатора, все в порядке, когда я проверяю, правильно ли я получил все значения из анализатора.Но каким-то образом последнее значение после этого искажается, хотя я не делаю ничего, что могло бы вызвать это.

Вот код, который я использую в cellForRow:

NSLog(@"index %i", indexPath.row);
ProductItem* item = [self.product.prodItems objectAtIndex:indexPath.row];
cell2.itemName.text = item.name;

Строка36, последний и бум!EXC_BAD_ACCESS, когда я пытаюсь прочитать свойство name.

Кто-нибудь здесь знает, что может происходить?Я никогда не сталкивался с такой проблемой раньше Спасибо за ваше время и внимание!

1 Ответ

0 голосов
/ 17 февраля 2012

С некоторой помощью коллеги я узнал, что происходит.Я выпускал свой currentParsedItem в разборке синтаксического анализатора, так что все выглядело нормально до [выпуска парсера];но после этого «currentParsedItem», который был последним объектом в моем изменяемом массиве, был установлен равным nil в функции dealloc парсера, и я получил пустой NSObject

Надеюсь, этот совет поможет другимпохожая проблема!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...