在willSet和didSet中使用NSLock

时间:2018-05-17 10:33:35

标签: swift multithreading

我想知道是否在 NSLock willSet 中使用了 didSet 保护多线程写作的属性是一种可行的解决方案。

类似的东西:

private let lock = NSLock()

private static var cachedUserTokenDetails: UserTokenDetails? {
    willSet {
        lock.lock()
    }
    didSet {
        lock.unlock()
    }
}

class func getUserTokenDetails() -> UserTokenDetails? {
    if cachedUserTokenDetails == nil {
        cachedUserTokenDetails = getUserTokenDetailsFromKeychain()
    }
    return cachedUserTokenDetails
}

我认为这是安全的,因为永远会调用willSetdidSet,对吧?

0 个答案:

没有答案