OC中常用到的属性修饰词readOnly,在swift中显然已经不存在了,有人说变成了计算属性,如下:
class ReadOnly {
var name: String {
get {
return ""
}
}
}
然而,会出现如下的情况:
很显然这并不是我们要的结果,我们要的是内部可设置,外部只读的属性,况且计算属性,在每次使用时都会重新计算,对于计算逻辑比较复杂的属性来说,多次调用性能肯定有影响
接下当然是优雅的方式实现我们想要的只读属性
class ReadOnly {
private(set) var name: String
init(_ name: String) {
self.name = name
}
}
let obj = ReadOnly.init("hah")
//以下代码会报错
obj.name = "hahh"
注意点:可设置fileprivate(set)为当前文件可调用set,private(set)class内有效。