在Swift中有計(jì)算屬性set{}和get{}和存儲屬性 didSet{}和willSet{},與OC不同的是,在Swift中g(shù)et與set方法并不常用,也不會(huì)重寫getter也setter方法,非要重寫的話,可以這樣:
private var _name: String?
var name: String? {
get {
// oc 返回 _成員變量
return _name
}
set {
//使用 _成員變量 記錄值
_name = newValue
}
}
屬性觀察者:存儲屬性 didSet{}和willSet{} 差不多是代替OC重新Set方法 ,再也不需要考慮 _成員變量 = 值,可以在內(nèi)設(shè)置UI
屬性觀察者,類似于觸發(fā)器。用來監(jiān)視屬性的除初始化之外的屬性值變化,當(dāng)屬性值發(fā)生改變時(shí)可以對此作出響應(yīng)。有如下特點(diǎn):
1,不僅可以在屬性值改變后觸發(fā)didSet,也可以在屬性值改變前觸發(fā)willSet。
2,給屬性添加觀察者必須要聲明清楚屬性類型,否則編譯器報(bào)錯(cuò)。
3,willSet可以帶一個(gè)newName的參數(shù),沒有的話,該參數(shù)默認(rèn)命名為newValue。
4,didSet可以帶一個(gè)oldName的參數(shù),表示舊的屬性,不帶的話默認(rèn)命名為oldValue。
5,屬性初始化時(shí),willSet和didSet不會(huì)調(diào)用。只有在初始化上下文之外,當(dāng)設(shè)置屬性值時(shí)才會(huì)調(diào)用。
6,即使是設(shè)置的值和原來值相同,willSet和didSet也會(huì)被調(diào)用
var name: String? {
//賦值前執(zhí)行
willSet{
print("1")
}
//賦值后執(zhí)行
didSet {
print("2")
}
}
計(jì)算屬性
var sum :Int? {
//獲取值
get{
return self.sum
}
//設(shè)置值
set{
self.sum = 10
}
}
也可以這樣簡寫get方法
var sum :Int? {
return self.sum
}