Я использую класс, унаследованный от UINavigationController, представленный в качестве модального вида, на панели навигации у меня есть кнопка «Готово», которая будет отклонять модальный вид, когда пользователь нажимает на него. Все ведет себя нормально, кроме dealloc () в ImagePickerController, GroupPickerController (который инициализируется как корневое представление) не вызывается, когда я отклоняю модальное представление. Это вызывает утечку памяти.
Вот код, использующий его:
ImagePickerController *picker = [[ImagePickerController alloc] initWithRootViewController:nil];
// don't show animation since this may cause the screen flash with white background.
[self presentModalViewController:picker animated:NO];
picker.navigationBar.barStyle = UIBarStyleBlack;
[picker release];
Вот что находится внутри ImagePickerController, который является UINavigationController:
- (id)initWithRootViewController:(UIViewController *)root {
GroupPickerController *controller = [[GroupPickerController alloc] initWithNibName:nil bundle:nil];
self = [super initWithRootViewController:controller];
[controller release];
if (self) {
self.modalPresentationStyle = UIModalPresentationPageSheet;
}
return self;
}
- (void)dealloc {
[super dealloc];
}
-(void) dismiss
{
[self.navigationController setViewControllers:nil];
[self dismissModalViewControllerAnimated:YES];
}
Вот код в GroupPickerController, это ответ на кнопку на панели навигации, чтобы закрыть модальное представление:
...
#pragma mark - button actions
- (void)done {
[self.parent dismiss];
}
Я пытался вручную удалить представления из NavigationController, похоже, не дал никакого эффекта ...
[self.navigationController setViewControllers: nil];
Спасибо за помощь!
ОБНОВЛЕНИЕ:
Пожалуйста, не обращайте внимания на этот вопрос, очевидно, это ошибка. (
Наконец-то решите проблему ... не меняйте код, а пересоберите проект. :(