Контроллер навигации и панель - управление памятью

во-первых ... я итальянец, извините за мой плохой английский!

Итак ... это мое приложение: я использую контроллер навигации: в первом представлении есть 10 кнопок, и каждая кнопка вызывает такие функции:

    [self pushViewController:nameview animated:YES];

к другому uiviewcontroller! Итак, у меня есть 11 uiviewcontroller! Каждый контроллер объявлен как здесь

@interface ...
IBoutlet UIViewController *viewcontroller;
...
@property (nonatomic, retain) IBOutlet UIViewController *viewcontroller;

Напоследок должен сказать, что работаю с IB!

Моя проблема в том, что мое приложение не освобождает память! когда я нахожусь в представлении и нажимаю на "backbuttonitem" (созданный IB, а не мной), последнее представление не выпускается (опять же, извините за мой плохой английский) ... и если пользователь видит все 10, приложение получит предупреждающий массаж (нехватка памяти)!

Как я могу освободить последнюю видную пилу перед действием popviewcontroller?

Спасибо


person JAA    schedule 19.06.2010    source источник


Ответы (1)


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

UIViewController *controller = [[UIViewController] initWithNibName:@"Nib" bundle:nil];
[self pushViewController:controller animated:YES];
[controller release];

Затем, когда вы используете popViewControllerAnimated:, контроллер навигации позаботится о том, чтобы контроллер представления был освобожден из памяти.

person rickharrison    schedule 19.06.2010
comment
извините, но я действительно новичок: P итак ... мой контроллер навигации - X, я нахожусь в представлении A, и я хочу нажать на представление B, которое я пробовал с этим: UIViewController * B = [[UIViewController ] initWithNibName: @Nib bundle: nil]; [самостоятельно pushViewController: B анимировано: ДА]; [Выпуск B]; но xcode сказал мне, что ожидалось: раньше] токен O_O, где ошибка? - person JAA; 20.06.2010
comment
я не понимаю, почему я должен делать это UIViewController * controller = [[UIViewController] initWithNibName: @Nib bundle: nil]; потому что я использовал IB для создания uiviewcontroller ... - person JAA; 20.06.2010
comment
Не следует использовать IB для создания контроллера представления, если он не отображается сразу. Вам действительно следует создавать контроллер только тогда, когда его нужно показать. - person rickharrison; 20.06.2010