swift构造方法的安全性检查

2 min read

检查1:子类的指定构造方法中,必须完成当前类所有存储属性的构造,才能调用父类的指定构造方法。此检查可以保证:在构造完从父类继承下来的所有存储属性前,本身定义的所有存储属性也已构造完成。

检查2:子类如果要自定义父类中存储属性的值,必须在调用父类的构造方法之后进行设置。此检查可以保证:子类在设置从父类继承下来的存储属性时,此属性已构造完成。

检查3:如果便利构造方法中需要重新设置某些存储属性的值,必须在调用指定构造方法之后进行设置。此检查可以保证:便利构造方法中对存储属性值的设置不会被指定构造方法中的设置覆盖。

检查4:子类在调用父类构造方法之前,不能使用self来引用属性(基类无所谓)。此检查可以保证在使用self关键字调用实例本身时,实例已经构造完成。