为什么NSTimer不能使用此代码?

时间:2015-07-13 18:43:32

标签: ios swift

我一直试图让这些代码的变体运行,但countItems()永远不会打印出NSLog。有人能告诉我出了什么问题吗?

func someFunction() {

    var fireDate = NSDate(timeIntervalSinceNow: 5)
    someTimer = NSTimer(fireDate: fireDate, interval: 120, target: self, selector: "countItems", userInfo: nil, repeats: true)

}

func countItems() {

    NSLog("countItems")

    //Perform some code here...     
}

2 个答案:

答案 0 :(得分:2)

尝试阅读文档!没关系。您已经创建了计时器,但在运行循环中从未计划。所以它什么都不做。文档清楚地说:

  

必须使用addTimer:forMode:将新计时器添加到运行循环中。

嗯,你没有。

你可能会更喜欢这样:

NSTimer.scheduledTimerWithTimeInterval(
    120, target: self, selector: "countItems", userInfo:nil, repeats:true)

答案 1 :(得分:1)

添加fire():

func someFunction() {

  var fireDate = NSDate(timeIntervalSinceNow: 5)
  someTimer = NSTimer(fireDate: fireDate, interval: 120, target: self, selector: "countItems", userInfo: nil, repeats: true)
  someTimer.fire()
}

或者它不会开始:Documentation