私はシンプルなナビゲーション階層を持っている:navigationController popToRootViewControllerとviewWillDisappear
Controller 1 > Controller 2 > Controller 3
各コントローラには、それの子と親への参照(@property (nonatomic, assign) ...
)が含まれています。
- (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)が実行される場合があります:
マイviewWillDisappearはこのようなものに見える結果
[self.navigationController popToRootViewControllerAnimated:NO];
を、私はので、クラッシュを取得します_refParentViewControllerは(この時点で)割り当て解除されたインスタンスです。 _refParentViewControllerが有効かどうかをどのように確認できますか?私はビューコントローラ/ビューが順番に破壊されると思っていましたが、コントローラ3の前にコントローラ2が破壊されているようです。
私はretainCount
を確認できますが、良いアイデア。
良い点。提案された解決策が働いた。ありがとう。 – Mustafa