Ios 停止NSTimer并关闭视图控制器(swift)

Ios 停止NSTimer并关闭视图控制器(swift),ios,swift,nstimer,viewcontroller,Ios,Swift,Nstimer,Viewcontroller,我正在使用NSTimer在我的firebase数据库中查找更新。我已将代码放入我的viewDidLoad()中 当用户收到数据库中的文件时,我希望用户转到另一个ViewController。问题是旧的视图控制器正在后台运行,或者在更改视图控制器时计时器没有停止 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.

我正在使用
NSTimer
在我的
firebase
数据库中查找更新。我已将代码放入我的
viewDidLoad()

当用户收到数据库中的文件时,我希望用户转到另一个
ViewController
。问题是旧的
视图控制器
正在后台运行,或者在更改
视图控制器
时计时器没有停止

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)            
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("recievedMission") as! RecievedMissionViewController
self.navigationController!.pushViewController(nextViewController, animated: true)
var timer:NSTimer?

如何关闭旧的
视图控制器
,或者如何以编程方式停止
NSTimer
?谢谢

//您好,计时器事件完成后,您需要如下所示使计时器无效

yourTimer.invalidate()

//您好,在计时器事件完成后,您需要按如下方式使计时器无效

yourTimer.invalidate()

只需存储计时器的实例,然后在移动到另一个控制器时使计时器无效,以便首先声明
NSTimer
的一个实例

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)            
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("recievedMission") as! RecievedMissionViewController
self.navigationController!.pushViewController(nextViewController, animated: true)
var timer:NSTimer?
现在使用此对象存储scheduledTimer的引用

self.timer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: #selector(DriversInterfaceViewController.CheckFormularChild), userInfo: nil, repeats: true)
现在简单地转到另一个控制器

self.timer.invalidate()

只需存储计时器的实例,然后在移动到另一个控制器时使计时器无效,以便首先声明
NSTimer
的一个实例

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)            
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("recievedMission") as! RecievedMissionViewController
self.navigationController!.pushViewController(nextViewController, animated: true)
var timer:NSTimer?
现在使用此对象存储scheduledTimer的引用

self.timer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: #selector(DriversInterfaceViewController.CheckFormularChild), userInfo: nil, repeats: true)
现在简单地转到另一个控制器

self.timer.invalidate()
在使实例变量timer无效后,将其置零是一件好事,如果需要使用相同的变量创建另一个计时器,则可以避免进一步的混淆


在实例变量计时器失效后将其置零是一件好事,如果您需要使用相同的变量创建另一个计时器,则可以避免进一步的混淆。

当NSTimer尚未失效时,view controller的实例仍在内存中,且未在ARC中释放。因此,当旧的视图控制器消失时,需要使NSTimer无效

override func viewWillDisappear(animated: Bool) 
{
   if self.timer != nil
   {
      self.timer!.invalidate()
      self.timer = nil
   }
}

当NSTimer尚未失效时,view controller的实例仍在内存中,并且尚未在ARC中释放。因此,当旧的视图控制器消失时,需要使NSTimer无效

override func viewWillDisappear(animated: Bool) 
{
   if self.timer != nil
   {
      self.timer!.invalidate()
      self.timer = nil
   }
}

要取消NSTimer,只需使用:

timer?.invalidate()

请确保函数
DriversInterfaceViewController.CheckFormularChild
在UIThread中运行(如果此方法触及UI),否则它将崩溃要取消NSTimer,只需使用:

timer?.invalidate()
请确保函数
DriversInterfaceViewController.CheckFormularChild
在UIThread中运行(如果此方法接触UI),否则它将崩溃