首页 > 代码库 > Object-C--->Swift之(十一)属性观察者
Object-C--->Swift之(十一)属性观察者
属性观察者机制能让程序在属性被赋值时获得运行代码的机会,用来监视属性的除初始化之外的属性值变化,当属性值发生改变时能够对此作出响应
详细包含两个特殊的回调方法:
willSet(newValue):被观察的属性即将被赋值之前自己主动调用方法。
didSet(old Value):被观察的属性被赋值完毕之后自己主动调用该方法。
观察的范围
除了延迟存储属性之外的全部存储属性(包含实例存储属性或类型存储属性)。
可通过重载方式为继承得到的属性(包含存储属性和计算属性)加入
属性观察者
定义语法格式
[修饰符] var 存储属性名:属性类型[=初始值]{
willSet(newValue){
//属性即将被赋值之前自己主动运行的代码
}didSet(oldValue)
{
//属性被赋值完毕之后自己主动运行的代码
}
}
说明:
willSet:willSet部分可定义一段运行性代码,被观察的属性即将被赋值之前自己主动运行这块代码。
willSet部分能够显式制定一个形參名,该形參代表了该属性将被设置的新值。Swift也能够省略这个形參名。Swift将为该形參提供一个隐式形參名:newValue。
didSet:didSet部分可定义一段运行性代码,被观察的属性被成功赋值之后自己主动运行这块代码。didSet部分能够显式制定一个形參名,该形參代表了该属性将被改动之前的旧值。Swift也能够省略这个形參名,Swift将为该形參提供一个隐式形參名:oldValue。
class Person {
var age:Int=0
{
willSet{
if(newValue<0 || newValue>200)
{
print("你输入的有误。非人类呀")
}
else{
print("即将成功")
}
}
didSet{
print("已完毕,原来的年龄为\(oldValue)")
}
}
}
var p=Person()
p.age=1000
Object-C--->Swift之(十一)属性观察者
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。