EXC_BAD_ACCESS вызвано отношением Core Data? - PullRequest
1 голос
/ 08 декабря 2011

У меня есть следующая проблема с Базовыми данными.

На объекте, содержащем отношение «один к одному» под названием Next, я выполняю некоторые действия, используя это отношение Next, чтобы перейти от одного экземпляра к следующему.Это прекрасно работает.

Используя следующий код:

error=nil;
[context save:&error];
NSLog(@"Error:%@",error);

Я проверяю в GDB, что мои данные сохраняются без проблем.

Вот когда возникают проблемы.После того, как я закрою симулятор (используя Command-Q);Когда я перезапускаю приложение, я получаю эту ошибку (в gdb): Программа получила сигнал: «EXC_BAD_ACCESS».Это происходит при попытке выполнить следующую строку кода:

item=[item valueForKey:@"Next"];

И в какой-то момент я видел в отладчике что-то вроде этого: этот класс не соответствует значению ключа, соответствующему кодированию для ключа Далее

Так как все работает отлично до закрытия приложения с помощью Command-Q, мой код не должен быть на 100% неправильным, но, очевидно, он также имеет некоторые ошибки.Есть ли какая-либо очевидная причина, по которой это могло бы быть?

На самом деле, на случай, если это неясно.Я сделал крошечный пример проекта, чтобы проиллюстрировать мою проблему на случай, если у вас будет время и интерес посмотреть на нее.Он показывает счетчик, идущий от 1 до 3, и имеет 2 кнопки для перемещения счетчика вперед и назад.Но я просто не уверен, как загрузить такой пример проекта на этот сайт.

В этот момент я попытался начать использовать инструменты, надеясь найти какие-то ошибки, но до сих пор безуспешно.Программа работает на одном этапе, а не после (даже моего крошечного тестового примера). Я подозреваю, что возникла некоторая хитрая проблема из-за ошибки в использовании Core Data.

1 Ответ

1 голос
/ 08 декабря 2011

Скорее всего, линия, где вы нажали EXC_BAD_ACCESS, это красная сельдь.Хотя, это может предложить некоторые подсказки.

Подумайте о том, что вы здесь делаете, конкретно:

item=[item valueForKey:@"Next"];

Что происходит с исходным item, которому вы присваиваете результаты valueForKey?Если это не объект с автоматическим выпуском, то у вас есть проблема прямо сейчас.

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

Для получения подробной информации, наряду с превосходной ссылкой на причины этих ошибок и пошаговыми инструкциями по их устранению, взгляните на ответы на следующие вопросы:

поиск причиныEXC_BAD_ACCESS - в Xcode4

Случайный EXC_BAD_ACCESS в месте, где это не может произойти

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