Swift - 单例模式

2017-08-23  本文已影响0人  是夏目啊
class ZRSingleton {

private let concurrentQueue = DispatchQueue(label: "ConcurrentQueue",  attributes: .concurrent, target: nil)
private var queueDic = [String: String]()

static let sharedInstance = ZRSingleton()
private init(){
    
}

func setDicValue(value: String, for key: String){
    
    concurrentQueue.async(flags: .barrier) {
        self.queueDic[key] = value
    }
}


func getDicValue(for key: String) -> String? {
    var result: String?
    
    concurrentQueue.sync {
        result = queueDic[key]
    }
    return result
}
}

vc

 func createPattern() {
    
    let single = ZRSingleton.sharedInstance;
    let single2 = ZRSingleton.sharedInstance;
    
    single.setDicValue(value: "11111", for: "Z")
    print(single.getDicValue(for: "Z") ?? "nil")
    //打印地址
    print("address:\(Unmanaged.passUnretained(single).toOpaque() )")
    print("address:\(Unmanaged.passUnretained(single2).toOpaque() )")
    
}
上一篇 下一篇

猜你喜欢

热点阅读