我想使用NSTimer每隔0.5秒调用一次函数50次,但我唯一的选择是让计时器无限期运行或创建不重复的计时器。我可以使用计时器来做我想做的事情,还是应该尝试使用别的东西?
答案 0 :(得分:7)
您只需使用类变量跟踪函数调用的数量。
一旦满足最大功能调用次数,就停止设置下一个定时器。
使用iOS UIViewController类作为示例:
class ViewController: UIViewController {
var timer:NSTimer? = nil;
var times:Int = 0;
override func viewDidLoad() {
super.viewDidLoad()
startTimer()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func startTimer() {
timer = NSTimer.scheduledTimerWithTimeInterval(0.5,
target: self,
selector: "onTick:",
userInfo: nil,
repeats: false)
}
func onTick(timer:NSTimer){
println("Fired \(self.times)")
times += 1
// call your function
if times < 50 { // set the next timer
self.startTimer()
}
}
答案 1 :(得分:0)
您可以在具有递归选择器和条件的函数中创建计时器(timeoutCounter <50):
class ViewController: UIViewController {
var timoutCounter:Int = 0
let kTimeoutWaitingTime = 50
override func viewDidLoad() {
super.viewDidLoad()
timeout()
}
func timeout() {
if timoutCounter < kTimeoutWaitingTime {
timoutCounter += 1
NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: #selector(ViewController.timeout), userInfo: nil, repeats: false)
}
}
}