iOS:处理全局属性的最佳方式

时间:2016-07-30 17:48:12

标签: ios swift thread-safety singleton

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

但是由于数组在swift中不是线程安全的,这种模式是否也解决了并发问题?是否有更好的存储方式,例如全局属性中的网络资源?

E.g。

class Repository {

    static let sharedInstance = Repository()

    var objects:[String] = []
}

1 个答案:

答案 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] = []
}