1

在我的课堂上,我有一个通用初始化程序:

- (id)initWithSettings:(MySettings *)settings
{
    self = [super init];
    if (self)
    {
     /// ...
    }
    return self;
}

它还有另一个具有固定设置的初始化程序

- (id)initWithSettingsForCaseA
{
    return [self initWithSettings:[MySettings genericSettings]];
}

我可以这样做吗?

4

1 回答 1

2

当然可以!

这实际上是一个很好的做法。

initWithSettings: 被称为“指定初始化器”。没有定义指定初始化程序的编程方式。这更像是一种设计模式/最佳实践。

以 UIViewController 的指定初始化程序为例,initWithNibName:bundle:..您仍然可以调用普通的 ol' init,只要您的 nib 与您的视图控制器子类命名相同,一切都会正常工作。UIViewController 只需调用其指定的初始化程序并为两个参数传递 nil。

你基本上在做同样的事情!

于 2013-02-07T03:47:30.100 回答