У меня есть приложение, в котором я пытаюсь рекурсивно загружать представления. Таким образом, у меня есть одно представление (ViewController), которое может перейти к другому представлению того же типа (ViewView Controller). У меня рекурсия работает нормально, а кнопки назад работают просто отлично. Но я пытаюсь реализовать функцию, которая выполняет некоторую работу, а затем выгружает текущее представление.
В другом месте моего кода у меня есть следующее:
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
UINavigationController *navigationController = [delegate navigationController];
[navigationController popViewControllerAnimated:YES];
Это также в конце функции, которая выполняет некоторую работу для этого представления (theSecondViewController), но загружает другое представление (theViewController).
Моя проблема в том, что когда я использую этот ЖЕ код в моем контроллере ViewView, он выходит из строя. Ну вроде. Я думаю, что он проходит и отключает контроллер, но когда он пытается перезагрузить представление (theViewController) слева от него (над ним, как бы вы ни думали об этом), он умирает. Оказавшись в голубой луне, он выплюнет:
malloc: *** error for object 0xfb9640: double free
*** set a breakpoint in malloc_error_break to debug
Но обычно он просто умирает без ошибок (по крайней мере, я так думаю):
GNU gdb 6.3.50-20050815 (Apple version gdb-966) (Tue Mar 10 02:43:13 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".sharedlibrary apply-load-rules all
Attaching to process 15739.
Любая помощь в понимании того, почему она может умереть при перезагрузке страницы, будет очень полезна.
Обновление:
Если произошла ошибка с пером, не возникнет ли проблема раньше? Я считаю, что это правильно. Я просто не уверен, куда идет код после [navigationController popViewControllerAnimated: YES]; Я думал, что это перейдет к следующему представлению viewDidLoad. Но у меня есть сообщение NSLog там, и оно не появляется.
Навигация, которую я могу сделать до сих пор, такова:
userViewController -> theViewController -> ... -> theViewController -> theSecondViewController
Если он прямо и прямо, он работает нормально. Приведенный выше код работает в SecondViewController, но не в ViewController