一张实现多个初始化函数很好的图
这种初始化方法的实质:在子类中重写父类的初始化方法,并在该方法中调用该子类自身的初始化方法。
作用:避免程序员错误调用初始化方法,比如只写了init,同样能够是的对象接受自己的初始化函数名称的message,从而完成初始化。
这种方法虽然巧妙,但是不是和所有的情况,有时候你需要避免别人滥用init,你可以重载该函数并给他一个异常,像这种
- (instancetype)init
{
[NSException raise:@"BNRWallSafeInitialization"
format:@"Use initWithSecretCode:, not init"];
}