自定义类时,一般都要需要提供初始化方法。正确的设置初始化方法,才能保证类的使用者使用自定义类时不出现问题。
- 提供一个designated initializer(能够为对象提供必要信息以便其能完成工作的初始化方法),并且类的其它初始化方法都调用这个designated initializer。
这样处理的好处是,当底层数据存储机制改变时,只需要修改designated initializer中的代码。
子类的designated initializer需要调用父类的designated initializer。
自定义类的designated initializer如果与其父类的designated initializer名称不同,就需要覆写父类designated initializer,自定义类的designated initializer再调用覆写的方法。
如果父类的初始化方法不适合子类,就需要在子类中覆写父类的初始化方法,并且抛出异常。
类的designated initializer可能不止一个。当存在一种完全不一样的初始化方式时,就还需要提供另外一个designated initializer。参考NSCoding协议。