«EXC_BAD_ACCESS» при переключении на другое представление - PullRequest
1 голос
/ 22 марта 2011

У меня есть MainMenuViewController с кнопкой, действие которой

- (IBAction) goToFirstView {
    FirstViewController *fvc = [[FirstViewController alloc] init];
    [self.view addSubview:fvc.view];
    [fvc release];
}

FirstViewController имеет UIButton с действием

- (IBAction) rightArrow {
    SecondViewController *svc = [[SecondViewController alloc] init];
    [self.view addSubview:svc.view];
    [svc release];
}

Но при нажатии кнопки «стрелка вправо» приложение вылетает с «EXC_BAD_ACCESS». Не могу найти мою проблему. Помогите мне, пожалуйста.

Ответы [ 2 ]

4 голосов
/ 22 марта 2011
[svc release];

Проблема здесь.При освобождении контроллера представления события представления будут нацелены на освобожденный объект и приведут к аварийному завершению вашей программы (возможно, в viewDidLoad или viewDidAppear, если это происходит мгновенно, но это не имеет значения).Обратите внимание, что представление (обычно AFAIK) не сохраняет свой контроллер представления, если это могло быть вашим предположением ...

1 голос
/ 22 марта 2011

Когда вы говорите [self.view addSubview:svc.view], вы добавляете представление SecondViewController к представлению FirstViewController.Аналогично с MainViewController и FirstViewController.В итоге вы получите иерархию представлений, которая выглядит следующим образом:

  • основной вид
    • первый вид
      • второй вид

Я сомневаюсь, что это действительно то, что вы хотите.Вместо этого используйте контроллер навигации с вашим MainViewController в качестве корневого контроллера контроллера навигации, а затем используйте -pushViewController: animated: для помещения контроллеров (не представлений!) В стек навигации.

...