2014-01-03 5 views
1

Так что я получаю эту ошибку (рисунок ниже). То, что происходит, когда я получаю эту ошибку, проходит через мою основную базу данных данных и усредняет результаты на основе статистики батареи, которую я собрал. Это работало нормально, пока я не сделал перерыв, а затем вернулся, подключил его и начал получать эту ошибку. У меня есть точка останова исключения, но она все еще не показывает мне ничего, кроме сбоя изображения.Тема 1: EXC_BAD_ACCESS (код = 1, адрес = 0xf1759018)

Кто-нибудь знает, что я должен делать?

Xcode версии 5.0

Позвольте мне знать, если я могу отправить что-нибудь другое, что может помочь понять, что является причиной этого!

This is the error

ответ

8

Для любых EXC_BAD_ACCESS ошибок, вы, как правило, пытаетесь отправить сообщение отпущенного объекта. BEST способ отслеживания этих действий используется NSZombieEnabled.

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

Это особенно помогает в фоновом режиме, когда отладчик иногда дергает любую полезную информацию.

ОЧЕНЬ ВАЖНО ДЛЯ ЗАМЕЧАНИЯ, однако, необходимо, чтобы 100% убедитесь, что это только в вашем отладочном коде, а не в коде, который вы тестируете вне XCode. Поскольку ничто никогда не выпускается, ваше приложение будет течь, течет и течет. Для того, чтобы напомнить мне, чтобы сделать это, я положил этот журнал в моем AppDelegate:

if (getenv("NSZombieEnabled")) 
    NSLog(@"NSZombieEnabled!"); 

Если вам нужна помощь в поиске точной линии, Build-и-Run. Когда приложение выйдет из строя, отладчик покажет вам, в какой строке и в сочетании с NSZombieEnabled, вы должны точно узнать, почему и какой тип объекта будет доступен после его выпуска.

+0

! [Введите описание изображения здесь] [2] [2]: http://i.stack.imgur.com/VsUPb.png @coneybeare Я не могу выполнить сборку и отладку, однако в сборке и запуске я получил это (см. изображение). Так что мне просто нужно выяснить, какая строка - распределение памяти, адрес и что происходит не так? – Charlie

+0

Ваше сообщение отправлено на exallocated instance, так что используйте зомби, как я показал вам выше. Xcode очень способен выполнять сборку и отладку, поэтому я не уверен, о чем вы говорите. – coneybeare

+0

Если вы используете Xcode 5, Build и Debug постоянно, если контрольные точки активированы. Это может быть источником вашей путаницы. – coneybeare

0

Иногда вы можете быстро удалить приложение из устройства и запустить его снова. Если это работает, это означает, что вы изменили свою базовую модель данных или что-то подобное.

+0

Я пробовал, но это не сработало. Я, хотя вы обычно получаете сообщение об ошибке при попытке запустить с измененной базой данных, в которой говорится, что что-то изменилось в базе данных – Charlie

Смежные вопросы