Swift 计时器

Swift 计时器

在开发移动应用程序时,有时需要安排一些任务在将来发生。Swift提供了一个计时器类,我们可以在一定时间间隔后执行任务。

在这篇文章中,我们将讨论如何使用swift计时器来安排任务。同时,我们还将讨论如何使用重复和非重复计时器。

下面的代码创建并运行了一个重复计时器。

let timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(fireTimer), userInfo: nil, repeats: true)

上述代码要求在同一类中定义一个@objc方法fireTimer()。

@objc func fireTimer(){
        debugPrint("Timer fired")
    }

在这里,我们已经将定时器设置为每1秒执行一次。因此,fireTimer()方法将每1秒被调用一次。然而,在创建重复定时器时,Swift允许我们定义闭包,如下所示。

let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { (timer) in
        debugPrint("Timer fired")
    }

两个初始化方法都用于返回创建的计时器。然而,我们可以将返回值存储在属性中,以便稍后可以使其无效。

创建非重复计时器

如果我们只想运行代码一次,就需要创建非重复计时器。为此,我们需要在创建计时器时将repeats属性更改为false。

    let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { (timer) in
        debugPrint("Timer fired")
    }

结束一个计时器

我们可以通过调用计时器对象的invalidate()方法来结束一个已存在的计时器。考虑以下示例,它每秒钟运行一次代码,共运行四次,然后使计时器失效。

var count = 0
let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { (timer) in
    debugPrint("Timer fired")
    count = count + 1
    if(count == 4){
        timer.invalidate()
    }
}

它在控制台上打印以下输出。

"Timer fired"
"Timer fired"
"Timer fired"
"Timer fired"

以上示例中,我们在创建计时器时使用了闭包。我们也可以在这里使用方法的方式。但是,在方法中无效化计时器对象如下所示。

class TimerExample:NSObject{
    var count = 0

    let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fireTimer), userInfo: nil, repeats: true)

    @objc func fireTimer(){
        debugPrint("Timer Fired")
        count = count + 1
        if(count == 4){
            timer.invalidate()
        }
    }
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程