swift - willSet didSet
- 属性初始化设值 不会触发 willSet 和 didSet
- 属性 设值时, 先触发 willSet 然后触发 didSet
- willSet 有个newVlue 参数 代表这次要设置的新值, didSet 有个 oldValue 的参数, 代表上次属性值
- 即使设置的值和上次的值一样, 也会调用 willSet 和 didSet
var name:String = "叛国贼 马步芳"{
didSet{
print("旧名字: \(oldValue)")
}
willSet{
print("新名字: \(newValue))")
}
}
//赋值
name = "马伯庸"
print("最佳小说家 \(name)")
//打印结果
//新名字:马伯庸
//旧名字: 叛国贼 马步芳
//最佳小说家 马伯庸
name = "罗永浩"
print("手机界的相声演员 \(name)")
//新名字:罗永浩
//旧名字: 马伯庸
//手机界的相声演员 罗永浩
name = "白云先生"
print("高贵的中国精神贵族 揭掉外国遮羞布的高人: \(name)")
//新名字:白云先生
//旧名字: 罗永浩
//高贵的中国精神贵族 揭掉外国遮羞布的高人: 白云先生