如何在选择器成功之前调用 NSTimer

How to call an NSTimer until selector is successful

我有一个名为 "Check" 的函数,它检查对象是否已更新,如果是这样,用户将被发送到另一个视图控制器。但是,NSTimer 不断重复自己,我希望它在用户被发送到另一个视图控制器后停止。

func check(){
    let current = PFUser.currentUser()?.objectForKey("username")
    let check = PFQuery(className: "Requests")
    check.whereKey("username", equalTo: current!)
    check.whereKey("requestResponded", equalTo: "True")
    check.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
        if error != nil || objects == nil{
            print("Request rejected.")
        } else {
            for object in objects!{
                let service = object["service"] as! NSValue
                print(service)
                if service == 1{
                    self.performSegueWithIdentifier("detailedRequest", sender: self)
                    print("detailedRequest")
                } else {
                    self.performSegueWithIdentifier("normalRequest", sender: self)
                    print("normal")
                }
            }
            print("Successfully retrieved that object.")
        }
    })
}

self.timer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: #selector(self.check), userInfo: nil, repeats: true)

声明一个 viewDidDisappear 函数并在其中 使 计时器无效。每次您的 viewController 消失时都会自动调用此函数。

像这样:

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(true)
    self.timer.invalidate()
}