1.储存属性:
作用:把常量或变量的值作为实例的一部分
定义:var/let
在类的初始化中,它的属性必须都被初始化。如果不想设置某个属性的默认值,则使用?声明为可选型,对于可选型的属性,初始值为nil,可以在实例中为其赋值。也可以使用lazy加在属性前面,表示该属性只有被调用的时候才会用到。
注:只有var定义的属性才能使用lazy关键字,而let定义的属性必须在类的初始化方法中进行初始化 什么逻辑需要使用到lazy呢?有些属性初始化的时候会依赖另一些属性,这样就可能造成卡顿。
2.计算属性:
计算属性不直接存储值,而是提供一个getter来获取值,一个可选的setter来间接设置其他属性和变量的值。
便携setter声明:如果计算属性没有定义表示新值得参数名,则使用默认的newvalue
3.属性观察器
1.属性观察器监控和相应属性值的变化,每次属性被设置值得时候都会被调用。
2.延迟属性不可以设置属性观察器
3.可以通过重写的方式为继承的属性添加观察器:
- willset:在新的值被设置之前调用
- didiset:在新的值被设置后调用
- 父类的属性在子类的构造器中被赋值时,观察器同样会被触发.