部分页面,比如NSTimer页面,在pop或dismiss的时候,由于有计时器的存在,不会走系统的dealloc方法,所以我们也就无法正常的释放计时器,那么我们该怎么做呢?其实方法很简单,系统已经提供给了我们方法,只是很少有人注意到。
我们只需要在viewWillDisappear的方法中来进行相关判断即可
1、页面将要出现时,判断页面是以push方式跳过来,还是以pop方式跳过来的
- (void)viewWillAppear:(BOOL)animated {
[superview WillAppear:animated];
if([self isBeingPresented] || [self isMovingToParentViewController]) {
// push / present
}else{
// pop /dismiss to here
}
}
2、页面将要消失时,判断此时的页面是pop到上一页面还是push到新页面
- (void)viewWillDisappear:(BOOL)animated {
[superview WillDisappear:animated];
if([self isBeingDismissed] || [self isMovingFromParentViewController]) {
// pop / dismiss
//在这里我们可以做计时器置空的相关操作
}else {
// push /present from here
}
}