init方法中是否会触发属性观察者?
class GitArtOS{
var content: String = "测试init方法中是否会触发属性观察者?"{
//新值存储之前调用
willSet{
print("willSet newValue \(newValue)")
}
//新值存储之后调用
didSet{
print("didSet oldValue \(oldValue)")
}
}
init() {
self.content = "init方法中是否会触发属性观察者?"
}
}
运行后发现:并没有打印输出,所以有以下结论:
- 在
init
方法中,如果调用属性
,并不会触发属性观察者
-
init
方法作用是初始化当前变量
,为了程序正常运行,在确保变量没有初始化完成之前是不允许修改的,因为除了结构中默认的前16个字节,其他属性会调用memset
清理内存空间(因为有可能被别人用过,是脏数据),最后才会赋值。
【总结】:
init方法
和声明默认值
时,都不会触发属性观察者
哪里可以添加属性观察者
?
-
类
和结构体
中定义的存储属性
- 通过
类
和结构体
继承的存储属性
- 通过
类
和结构体
继承的计算属性
网友评论