swift 单例

151 阅读1分钟

1 swift 单例

final class SingleTon: NSObject {
    static let shared = SingleTon()
    private override init() {}
}

*final 单例类终止继承

  • 初始化方法私有,避免外部对象通过init方法创建单例实例

2 信号量DispatchSemaphore

let semaphoreSignal = DispatchSemaphore.init(value: 1)
       for i in 0..< 5 {
            DispatchQueue.global().async {

                semaphoreSignal.wait()

                print(Thread.current)

                print(i)

                semaphoreSignal.signal()

            }
        }
        初始值如果是50回怎么样? 顺序会乱
        
 - DispatchSemaphore(value: 2)初始化信号量为2,用来控制并发线程的数量,相当于`Operation`中的`maxConcurrentOperationCount
-   semaphore.wait()信号量 -1
-   semaphore.signal()信号量为+1