LTDispatchQueue.swift
901 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//
// LTDispatchQueue.swift
// LTScrollView
//
// Created by 高刘通 on 2018/2/3.
// Copyright © 2018年 LT. All rights reserved.
//
import Foundation
extension DispatchQueue {
private static var _onceTracker = [String]()
public class func once(token: String, block: () -> ()) {
objc_sync_enter(self)
defer {
objc_sync_exit(self)
}
if _onceTracker.contains(token) {
return
}
_onceTracker.append(token)
block()
}
func async(block: @escaping ()->()) {
self.async(execute: block)
}
func after(time: DispatchTime, block: @escaping ()->()) {
self.asyncAfter(deadline: time, execute: block)
}
}
extension DispatchQueue {
func after(_ delay: TimeInterval, execute: @escaping () -> Void) {
asyncAfter(deadline: .now() + delay, execute: execute)
}
}