[Swift实际操作]七、常见概念-(9)使用定时组件Timer执行定时任务
本文将为你演示计时器的使用,使用计时器可以每隔一定时间执行某个函数。
在左侧的项目导航区,打开视图控制器的代码文件:ViewController.swift
现在开始编写代码,实现任务定时的功能。
定义一个定时器对象,并设置执行的时间间隔为1秒,定时执行的任务代码位于尾部的闭包之中。
1 let tmr = Timer(timeInterval: 1.0, repeats: fasle) 2 { 3 (timer) in print("Timer in a block.") 4 //调用定时器的执行方法,开始执行定时任务。 5 tmr.fire() 6 }
接着继续编写代码,将定时任务设置为循环执行。
定义一个定时器对象,并设置执行的时间间隔为1秒,定时执行的任务代码位于尾部的闭包之中。
将是否循环的参数设置为真:repeats: true
1 Timer.scheduledTimer(withTimeInterval: 1.0,repeats: true){ 2 { 3 (timer) in print("scheduledTimer in a block.") 4 }
接着继续编写代码,由当前的视图控制器,实现定时任务中的业务功能。
创建一个定时任务,每隔1秒钟,执行一次当前视图控制器的实例方法,并使用UserInfo设置传递的参数。
1 //添加一个数量属性,并设置默认值为0,作为已经想用过的苹果数量 2 var appleCount = 0 3 Timer.scheduledTimer(timeInterval: 1, 4 target: self, 5 selector:#selector(ViewController.timerAction(_:)), 6 userInfo:"an apple", 7 repeat: true) 8 //添加一个方法,用来响应定时器的调用 9 @objc func timerActio(_ timer: Timer) 10 { 11 //判断当苹果数量等于3时停止定时器 12 if self.appleCount == 3 13 { 14 timer.invalidate() 15 //获得传递的参数,并在控制台输出定时日志 16 let parameter = timer.userInfo 17 print("I'm eating \(parameter!).") 18 //将吃过的苹果数量加1 19 self.appleCount += 1 20 } 21 }
技巧:我们可以通过NSExceptionDomains来针对特定的域名开放HTTP,可以容易通过审核。