У меня есть простая навигационная иерархия:
Controller 1 > Controller 2 > Controller 3
Каждый контроллер содержит ссылку (@property (nonatomic, assign) ...
) на свой дочерний и родительский элемент.
Мой viewWillDisappear выглядит примерно так:
- (void)viewWillDisappear:(BOOL)animated {
NSLog(@"%s", __FUNCTION__);
if (![self.navigationController.viewControllers containsObject:self]) {
// View has been popped! Important to distinguish between view popping and tab switching.
// If parent view controller is active, pass a message.
if (_refParentViewController && !_isSearchViewController) {
_refParentViewController.valueX = @"xyz";
}
}
[super viewWillDisappear:animated];
}
Теперь есть случай, когда выполняется следующая инструкция (Контроллером 1):
[self.navigationController popToRootViewControllerAnimated:NO];
В результате я получаю сбой, потому что _refParentViewController является освобожденным экземпляром (на этом этапе).Как я могу проверить, действительно ли _refParentViewController?Я думал, что контроллеры / представления вида будут уничтожены по порядку, но похоже, что никакого определенного порядка нет, и Контроллер 2 уничтожается до Контроллера 3.
Я могу проверить retainCount
, но я неконечно, если это хорошая идея