在Swift中声明全局变量的最佳方法是什么?我正在使用Singletons将对象保存在内存中。此外,我可以从任何地方访问它们。
但是由于数组在swift中不是线程安全的,这种模式是否也解决了并发问题?是否有更好的存储方式,例如全局属性中的网络资源?
E.g。
class Repository {
static let sharedInstance = Repository()
var objects:[String] = []
}
答案 0 :(得分:1)
跨线程读取数组是安全的。这是写作不是。有关如何以线程安全的方式访问数组,请参阅this question。
实现共享实例的方法过于冗长,将在Swift 3中弃用。请改用惰性初始化:
class Repository {
static var sharedInstance = { Void -> Repository in
let tmp = Repository()
tmp.objects = ["Hello", "World"]
return tmp
}()
var objects:[String] = []
}