只读变量时变量是否安全?

时间:2016-06-16 19:03:54

标签: swift

class MyClass
    let myString = "string"

    func myFunc() -> String {
       return self.myString
    }
}

鉴于永远不会更改myStringmyFunc线程安全吗?

1 个答案:

答案 0 :(得分:3)

通常,仅使引用为只读以使类具有线程安全性是不够的。您需要确保不能改变引用的对象。

您的功能是线程安全的。但是,将myString设置为只读只是原因的一部分:另一部分是myString是不可变类型的事实。

例如,尽管MyClass是只读的,但myData不是线程安全的:

class MyClass
    let myData = Mutable()

    func myFunc() -> Mutable {
       return self.myData
    }
}

class Mutable {
    var array : [String]
    func add(s:String) {
        array.apppend(s)
    }
}