swift 延时执行并且只执行最后一次

class MyViewController: UIViewController {
    private var delayedTask: DispatchWorkItem?
    
    func executeAfterDelay() {
        // 取消之前的延迟任务,确保只执行最后一次调用
        delayedTask?.cancel()
        
        // 创建新的延迟任务
        let task = DispatchWorkItem { [weak self] in
            // 在这里执行您的事件
            print("执行延迟事件")
        }
        
        // 将新的延迟任务赋值给实例变量
        delayedTask = task
        
        // 延迟5秒执行任务
        DispatchQueue.main.asyncAfter(deadline: .now() + 5, execute: task)
    }
}

你可能感兴趣的:(swift)