Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 恩斯泰默赢得';不要使Swift 2失效_Ios_Swift_Nstimer - Fatal编程技术网

Ios 恩斯泰默赢得';不要使Swift 2失效

Ios 恩斯泰默赢得';不要使Swift 2失效,ios,swift,nstimer,Ios,Swift,Nstimer,我不知道为什么我的计时器不会失效 var timer = NSTimer() override func viewDidLoad() { super.viewDidLoad() timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "loadCurrentGame", userInfo: nil, repeats: true) } override func viewWillDisa

我不知道为什么我的计时器不会失效

var timer = NSTimer()
override func viewDidLoad() {
    super.viewDidLoad()
    timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "loadCurrentGame", userInfo: nil, repeats: true)

}

override func viewWillDisappear(animated: Bool) {
    self.timer.invalidate()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    self.timer.invalidate()
}

正如您所看到的,我尝试从两个视图调用invalidate将消失以及prepareForSegue。我想这可能与计时器在另一个线程上启动有关,而不是试图在另一个线程上使其无效

我只想在该视图处于活动状态时运行计时器,而不是在其他视图上运行计时器


这是由于之前尝试执行我从ViewWillExample调用viewDidLoad的操作时出现的错误(我现在知道这是一种不好的做法),导致了此错误。

“我想这可能与计时器在不同的线程上启动有关,而不是与我尝试使其无效有关。”:不是,
viewDidLoad
ViewWillEnglish
都在主线程上被调用。谢谢,prepareForSegue也在主线程上被调用吗?是的,除非另有明确说明,否则UIKit默认在主线程上运行。如果你在后台线程上乱搞,那么这确实会导致问题。但是,您必须不遗余力地编写在后台运行的代码。您是否使用诸如dispatch_async、NSThreads、NSOperations之类的GCD调用?是的,从计时器触发的函数执行NSURLSession,该NSURLSession对我的数据库执行异步请求,然后我为主线程分派_async,以将视图标签/图像与数据库信息同步。