// // DispatchQueue+Extension.swift // SwiftBilibili // // Created by 罗文 on 2021/1/15. // Copyright © 2021年 罗文. All rights reserved. // import Foundation extension DispatchQueue { static var `default`: DispatchQueue { return DispatchQueue.global(qos: .`default`) } static var userInteractive: DispatchQueue { return DispatchQueue.global(qos: .userInteractive) } static var userInitiated: DispatchQueue { return DispatchQueue.global(qos: .userInitiated) } static var utility: DispatchQueue { return DispatchQueue.global(qos: .utility) } static var background: DispatchQueue { return DispatchQueue.global(qos: .background) } class func delay(time:Double,action:@escaping ()->()) { let when = DispatchTime.now() + time DispatchQueue.main.asyncAfter(deadline: when) { action() } } private static var _onceTracker = [String]() class func once(_ token: String, block:()->Void) { objc_sync_enter(self) defer { objc_sync_exit(self) } if _onceTracker.contains(token) { return } _onceTracker.append(token) block() } }