初始化器
- 类、结构体、枚举都可以定义初始化器
- 类有两种初始化器:指定初始化器(designated initializer),便捷初始化器(convenience Initializer)
-
每个类至少有一个指定初始化器,指定初始化器是类的主要初始化器
-
默认初始化器总是类的指定初始化器
-
类偏向于少量指定初始化器,一个类通常只有一个指定初始化器
-
初始化器的相互调用规则
1、指定初始化器必须从它的直系父类调用指定初始化器
2、便捷初始化器必须从相同的类里调用另一个初始化器(从自己的类里调用)
3、便捷初始化器必须最终调用一个指定初始化器,也就是说你这个便捷初始化器别管调了哪个其它的初始化器,可能其它的初始化器也在调用另一个初始化器,但最终形成调用链条的末尾一定要调用指定初始化器,要不然编译器会报错
初始化器2.png
-
这一套规则保证了使用任意初始化器,都可以完整地初始化实例
初始化器4.png
网友评论