有没有办法知道视图控制器在-viewWillAppear
和-viewWillDisappear
之间的视图控制器生命周期中的某个位置?
我问,因为我想确定当我的视图不在屏幕上或者即将从屏幕上消失时,方法不会被触发。当视图即将从屏幕上消失时,我无法在运行时明确检查的某些对象可能会或可能不会被释放,因此,显然,与它们交互可能会导致message sent to deallocated instance
错误。
目前,我正在跟踪BOOL
,如此:
- (void)viewWillAppear:(BOOL)animated {
isOnScreen = YES;
[super viewWillAppear:animated];
}
- (void)willWillDisappear:(BOOL)animated {
isOnScreen = NO;
[super viewWillAppear:animated];
}
我的方法看起来像这样:
if (isOnScreen) [self doSomething];
有更简单的方法吗?
答案 0 :(得分:1)
你的方式似乎是最简单的方法,如果不是最强大的。 (简单地检查视图的实例是否存在似乎是正确的方法(如果尚未解除分配))。
我也真的不明白这个的目的,除非你有另一个视图控制器运行与视图控制器有关的方法,显示你正在使用布尔值。在这种情况下,它更多的是设计问题,而不是维护问题。
答案 1 :(得分:0)
使用viewDidDisappear
- (void)viewDidDisappear:(BOOL)animated {
// Do stuff that has to be done when this view is off screen.
}