/**
重写 属性观察器
1.只能给非lazy属性的变量存储属性设定属性观察器,不能给计算属性设定属性观察器。
属性观察器的限制:(1)不可以给只读的存储/计算属性,在子类中设定属性观察器,
(因为只读,不会改变嘛)
// 必须在父类中是可读可写的,才可以在子类中重写属性观察器啊。
// 可以重写父类中的计算属性的属性观察器
*/
class Observer {
var storeProperty: Int = 0 {
willSet {
print("storeProperty father will Set")
}
didSet {
print("storeProperty father did Set")
}
}
// 不能给计算属性设定属性观察器
var computeProperty: Int {
get {
return 0
}
set {
print("Do nothing!")
}
}
}
class ChildOfObserver: Observer {
// 可以重写父类中变量存储属性
override var storeProperty: Int {
willSet {
print("storeProperty will Set")
}
didSet {
print("storeProperty did Set")
}
}
// 可以重写父类中的计算属性的属性观察器
override var computeProperty: Int {
willSet {
print("computeProperty will Set")
}
didSet {
print("computeProperty did Set")
}
}
}
let co = ChildOfObserver.init()
co.storeProperty = 10
/**
will Set
father will Set
father did Set
did Set
*/
co.computeProperty = 9
/**
computeProperty will Set
Do nothing!
computeProperty did Set
*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。