12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // 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()
- }
-
-
- }
|