EXC_BAD_ACCESS на тривиальный код - PullRequest
0 голосов
/ 06 июля 2011

Это код:

UITabBarController *tbc = [[UITabBarController alloc]init];
tbc.viewControllers = [NSArray arrayWithObjects:ptlc,cvc,gvc,nil];
[self.navigationController pushViewController:tbc animated:YES];
[tbc release];

Это последняя часть кода в tableView: didSelectRowAtIndexPath :. При выборе строки UITabarController показывает нормально, но при нажатии кнопки «назад» на UINavigationController, программа вылетает через секунду без печати какого-либо описания на консоли. Отладчик просто указывает мне: «Поток 1: Программа получила сигнал:« EXC_BAD_ACCESS ».» на этой линии:

 int retVal = UIApplicationMain(argc, argv, nil, nil);

На "main.m". Невероятно, но удаление последней строки решает проблему. ptlc cvc и gvc - это контроллеры, которые я сначала выделяю и которые я освобождаю после последней строки этого примера кода.

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Решил сам, используя инструмент профиля "зомби". Он показал мне, что UIImage получал сообщение об освобождении после освобождения. Это потому, что я использовал один и тот же UIImage для двух разных UITabBarItems на UITabBar.

0 голосов
/ 06 июля 2011

, поскольку в этом коде нет ничего явно неправильного с точки зрения памяти; это заставляет меня поверить, что это происходит, потому что вы не должны использовать UITabBarController в качестве контроллера просмотра в стеке UINavigationController. Из документации Apple по UITabBarController:

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

  • Установите его прямо в главном окне вашего приложения.
  • Установите его как одно из двух корневых представлений в интерфейсе разделенного представления. (только для iPad)
  • Представьте его модально для отображения некоторых данных, для которых требуется собственная организация на основе режима.
  • Показать его из поповера. (только для iPad)
...