【发布时间】:2015-07-16 16:26:34
【问题描述】:
我想在一个使用 Swift 2 的类上定义一个静态变量,它是一个 NSLock。
经过研究,我发现我必须使用结构,如下所示:
class Entity: NSManagedObject {
struct Mechanism {
static let lock = NSLock()
}
func myFunction -> NSArray {
Mechanism.lock.lock()
// do something
Mechanism.lock.unlock()
}
}
这会像 C 一样工作吗?我的意思是,第一次使用 Mechanism 时会创建一个静态锁定常量,后续调用将使用相同的常量?
我觉得这是不正确的,因为这条线
static let lock = NSLock()
正在初始化一个 NSLock。所以每次都会初始化一个新的。
如果这不是很快,我会这样做:
static NSLock *lock;
if (!lock) {
lock = ... initialize
}
如何在 Swift 2 中做同样的事情?
【问题讨论】: