在过去的几天里,我试图调查我最近发现的非常奇怪的情况。popViewControllerAnimated:
问题是推送的控制器在通话后看起来还活着。我创建了一个简单的测试项目(启用了 ARC),其中两个控制器嵌入在根导航控制器中,并且该行为已被重现。
这是触发第二个控制器的第一个 viewController 代码:
-(IBAction)push:(id)sender {
[self performSegueWithIdentifier:@"vseg" sender:nil];
}
从我的角度来看,没有什么不寻常的。第二个控制器中有一个方法,每秒由计时器调用:
-(void) ticker {
NSLog(@"from ViewController2 %d", tickerCount++);
_counterLabel.text = [NSString stringWithFormat:@"tick: %d", tickerCount];
[self performSelector:@selector(ticker) withObject:nil afterDelay:1];
}
仍然没有什么异常 - 应用程序按预期工作,UILabel 更新,tickerCount 值增加,并且消息出现在控制台上。接下来我们点击返回按钮,第一个控制器被弹出并且控制台继续从第二个控制器接收消息。
我仍然不知道它实际上是什么意思?整个控制器是否保持未发布或只是由某些对我没有意义的 clousure 变量持有的ticker 方法。这是测试项目http://hxml.ru/EliEX