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),否则它将崩溃