swift gcd 倒計時

//swift gcd寫了一個300s 的倒計時

   func startTime() {
        
        var timeCount = 300
        //創建全局隊列
        let queue = DispatchQueue.global(qos: .default)
        //在全局隊裏創建一個時間源
        let timer = DispatchSource.makeTimerSource(flags:[], queue: queue)
        //設定時間間隔是一秒,並且立即開始
        timer.scheduleRepeating(wallDeadline: DispatchWallTime.now(), interval: DispatchTimeInterval.seconds(1))
        //時間源立刻發出事件
        timer.setEventHandler {
            
            if timeCount <= 0 {
                
                timer.cancel()
                
                DispatchQueue.main.async(execute: {
                    //更新ui邏輯
                    print("resent")
                    
                })
                
            }else {
                
                DispatchQueue.main.async(execute: {
                    //更新ui邏輯
                    print("\(timeCount)s")
                })
                
                timeCount -= 1
            }
        }
        timer.resume()
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章