var faderTimer: NSTimer?
override func viewDidLoad() {
super.viewDidLoad()
self.faderTimer = NSTimer.scheduledTimerWithTimeInterval(self.fadeTime, target: self, selector: Selector("fadeBackground"), userInfo: nil, repeats: true)
}
我需要在控制器定义之前使这个定时器无效。如何在viewWillDisappear中不执行NSTimer而使其失效/取消?
deinit {
//never gets called
if let timer = self.faderTimer {
self.faderTimer!.invalidate()
self.faderTimer = nil
}
}
但是,我不能将它粘在deinit()中。看起来我必须在viewWillDisappear
内使它无效。但是,我不想这样做,因为它会扰乱背景切换。 (从后台返回不会调用viewWillAppear,所以我必须使用通知来启动计时器,这是一个巨大的痛苦。)我宁愿在viewDidLoad上启动计时器,并在deinit()上停止它。
对不起,你能澄清一下'viewWillDisappear'中的错误吗?这不仅仅是因为用户背景的应用程序,所以有什么问题? – matt