OC中常用到的屬性修飾詞readOnly,在swift中顯然已經(jīng)不存在了夺脾,有人說變成了計(jì)算屬性超埋,如下:
class ReadOnly {
var name: String {
get {
return ""
}
}
}
然而,會出現(xiàn)如下的情況:
很顯然這并不是我們要的結(jié)果改艇,我們要的是內(nèi)部可設(shè)置锌半,外部只讀的屬性禽车,況且計(jì)算屬性,在每次使用時都會重新計(jì)算刊殉,對于計(jì)算邏輯比較復(fù)雜的屬性來說殉摔,多次調(diào)用性能肯定有影響
接下當(dāng)然是優(yōu)雅的方式實(shí)現(xiàn)我們想要的只讀屬性
class ReadOnly {
private(set) var name: String
init(_ name: String) {
self.name = name
}
}
let obj = ReadOnly.init("hah")
//以下代碼會報(bào)錯
obj.name = "hahh"
注意點(diǎn):可設(shè)置fileprivate(set)為當(dāng)前文件可調(diào)用set,private(set)class內(nèi)有效记焊。