在Swift中声明全局变量的最佳方法是什么?我正在使用Singletons将对象保存在内存中。此外,我可以从任何地方访问它们。

但是由于数组不是快速线程安全的,因此这种模式还能解决并发性吗?是否有更好的存储方式,例如全球资源中的网络资源?

例如。

class Repository {

    static let sharedInstance = Repository()

    var objects:[String] = []
}

最佳答案

跨线程读取数组是安全的。不是写作。有关如何以线程安全的方式访问数组的信息,请参见this question

您实现共享实例的方法过于冗长,将在Swift 3中弃用。请改用惰性初始化:

class Repository {
    static var sharedInstance = { Void -> Repository in
        let tmp = Repository()
        tmp.objects = ["Hello", "World"]
        return tmp
    }()

    var objects:[String] = []
}

关于ios - iOS:处理全局属性的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38676812/

10-13 04:34