前言
public class NSTimer : NSObject
- 作用
- 在指定的時間執行指定的任務。
- 每隔一段時間執行指定的任務。
1、定時器的創建
2、定時器的啟動與關閉
// 啟動定時器
timer.fireDate = NSDate.distantFuture()
// 暫停定時器
timer.fireDate = NSDate.distantPast()
// 關閉定時器,永久關閉定時器
timer.invalidate()
3、子線程定時器的創建
在子線程創建定時器時,需要手動開啟子線程的運行循環。
dispatch_async(dispatch_get_global_queue(0, 0)) {
// 在子線程創建定時器
/*
scheduled 或 timer 方式創建
*/
let timer:NSTimer = NSTimer(timeInterval: 2.0,
target: self,
selector: #selector(ViewController.updateTimer(_:)),
userInfo: nil,
repeats: true)
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
// 啟動子線程的運行循環
/*
這句代碼就是一個死循環!如果不停止運行循環,不會執行添加到此句之后的任何代碼
*/
CFRunLoopRun()
// 停止子線程運行循環之前,不會執行添加到此處的任何代碼
}
var num:Int = 0
func updateTimer(timer:NSTimer) {
num = num + 1
// 滿足條件后,停止當前的運行循環
if (num == 8) {
// 停止當前的運行循環
/*
一旦停止了運行循環,后續代碼能夠執行,執行完畢后,線程被自動銷毀
*/
CFRunLoopStop(CFRunLoopGetCurrent())
}
}
4、定時任務
1)performSelector
// 延時調用
/*
1.5 秒后自動調用 self 的 hideHUD 方法
*/
self.performSelector(#selector(NsTimer.hideHUD), withObject: nil, afterDelay: 1.5)
// 取消延時調用
NSObject.cancelPreviousPerformRequestsWithTarget(self, selector: #selector(NsTimer.hideHUD), object: nil)
2)GCD
// 多線程
/*
1.5 秒后自動執行 block 里面的代碼
*/
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(1.5 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
self.hud.alpha = 0.0;
}
3)NSTimer
// 定時器
/*
1.5 秒后自動調用 self 的 hideHUD 方法
*/
NSTimer.scheduledTimerWithTimeInterval(1.5,
target: self,
selector: #selector(NsTimer.hideHUD),
userInfo: nil,
repeats: false)
|