我有一個簡單的導航層次:navigationController popToRootViewController和viewWillDisappear
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
,但我不確定這是否是好主意。
好點。建議的解決方案奏效謝謝。 – Mustafa