SwiftSynchronized 提供了一个名为 synchronized 的全局公共函数,作为 Objective-C 的 @synchronized 指令的 Swift 替代。它还向 NSLock 和 NSRecursiveLock 添加了一个 performAndWait
扩展。
使用 synchronized
synchronized(self) {
// Critical section
}
使用 NSLock 和 NSRecursiveLock
lock.performAndWait {
// Critical section
}
使用 synchronized
var _privateStorage: String // The actual private storage
var threadSafeAccessor: String { // A thread safe accessor
get { return synchronized(self, _privateStorage) }
set { synchronized(self, _privateStorage = newValue) }
}
使用 NSLock 和 NSRecursiveLock
let lock = NSLock() // Or NSRecursiveLock()
var _privateStorage: String // The actual private storage
var threadSafeAccessor: String { // A thread safe accessor
get { return lock.performAndWait(_privateStorage) }
set { lock.performAndWait(_privateStorage = newValue) }
}
通过 CocoaPods 安装
pod 'SwiftSynchronized'
别忘了在某些地方
import SwiftSynchronized
你的项目中。
您还可以使用 Carthage,或者直接将 SwiftSynchronized.swift 添加到您的项目中。
与 Objective-C 的 @synchronized 不同,Swift synchronized 不处理异常。
1.0.0 – 添加了对 autoclosures 的支持,这使得返回值和扩展 NSLock 和 NSRecursiveLock 的语法得到改进。还添加了 Carthage 支持,以及 CocoaPods 中对多个平台的支持。0.0.1 – 初始发布