在我的课堂上,我有一个通用的初始化器:
- (id)initWithSettings:(MySettings *)settings
{
self = [super init];
if (self)
{
/// ...
}
return self;
}
它有另一个具有固定设置的初始化
- (id)initWithSettingsForCaseA
{
return [self initWithSettings:[MySettings genericSettings]];
}
我可以这样做吗?
答案 0 :(得分:2)
当然可以!
这实际上是一种很好的做法。
initWithSettings:被称为“指定的初始化器”。没有以编程方式定义指定的初始化程序。这更像是一种设计模式/最佳实践。
以UIViewController的指定初始化程序为例,initWithNibName:bundle:..你仍然可以调用普通的'init',只要你的nib与你的视图控制器子类名相同,一切都会正常工作。 UIViewController只是调用它的指定初始化程序,并为两个参数传递nil。
你基本上都在做同样的事情!