Nano Hash - криптовалюты, майнинг, программирование

EXEC_BAD_ACCESS (код = 1, адрес = 0x90000008) при переключении контроллеров представления

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

Это работало отлично (правильное нажатие и выталкивание), пока я не добавил меню статистики, когда один из режимов игры заканчивался.

Теперь я иногда получаю ошибку EXEC_BAD_ACCESS при переключении из меню статистики обратно в tableViewController. Так:

TVC ---> Игра ---> Статистика

Затем

Статистика ---> ТВЦ

Код для переключения с TVC на Game:

NSString* a = (NSString*)[games objectAtIndex:indexPath.row];
a = [a stringByReplacingOccurrencesOfString:@" " withString:@""];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self performSegueWithIdentifier:a sender:self];

Код для перехода из игры в меню статистики:

[self performSegueWithIdentifier:@"Stats" sender:self];

Код для перехода из меню статистики в TVC (где возникла проблема):

NSArray* controllers = self.navigationController.viewControllers;
int a = [controllers count] - 1;
[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:a-2] animated:YES];

Ошибка в вопросе

Ссылка на код


  • exec_bad_access почти ничего не говорит нам, кроме того, что пытается получить доступ к недопустимому объекту. Вы используете АРК? Также у вас включены точки останова исключений? 07.06.2012
  • ARC отключен, а что такое точки останова исключений? 07.06.2012
  • На самом деле это EXC_BAD_ACCESS (это мач исключение) 07.06.2012
  • См. первый ответ на этот вопрос: stackoverflow.com/questions/10212677/ 07.06.2012
  • @JasonCoco Да, ты прав! 07.06.2012
  • Также убедитесь, что у вас включен NSZombies, если вы не используете ARC. В Xcode 4: Редактировать схему -> Диагностика -> Включить объекты-зомби 07.06.2012
  • Покажите какой-нибудь код, иначе это вопрос слишком произвольный. Похоже, что вы пытаетесь получить доступ к блоку памяти (возможно, из NSArray?), который был освобожден. 07.06.2012
  • Я переключил его на ARC, чтобы, по крайней мере, у меня было что-то, что будет жаловаться, если я напортачу. Пытаюсь воспроизвести снова... 07.06.2012
  • Я добавил ссылку на мои основные файлы кода. На данный момент я собираюсь придерживаться ARC, так как, похоже, я не испытываю этой ошибки при его включении. 07.06.2012

Ответы:


1

Попробуйте проанализировать свой код, чтобы увидеть, есть ли утечка памяти. Это может быть причиной сбоя вашего приложения.

07.06.2012
  • Переключен на ARC, чтобы избежать проблем с выделением/освобождением 15.06.2012

  • 2

    Похоже, Apple сейчас пытается внедрить ARC. Я только что загрузил обновление для SDK 10.7, и оно сделало мою программу (которая также содержит PerformSegueWithIdentifier:) суперглючной и выдало EXC_BAD_ACCESS для нескольких проблем, которые я ранее решил (до обновления SDK). Я включил ARC и закомментировал все мои вызовы release/dealloc, и он вернулся в рабочее состояние. Хорошо, как отладчик указывает вам, где они, я полагаю. :)

    10.07.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..