在init方法中调用self的init方法是否可行?(涉及IT技术)

9

最近我意识到我需要在一个助手类的init方法中添加一个参数。这个助手类处理警告视图,因此它已经有了一堆在init中使用的参数,这些参数被查看、调整,然后发送到警告视图。

由于我在各个地方都使用这个方法,我不想冒险出现崩溃(通过错过其中一个地方并在客户手中得到“未识别的选择器”),所以我决定添加第二个init方法。

即:

- (id)initWithA:B:C:D:

并且

- (id)initWithA:B:C:foo:D:

现在我只是将第一个实现复制粘贴到foo:中,但理想情况下,希望将第一次调用变成第二次,即:

- (id)initWithA:a B:b C:c D:d
{
    return [self initWithA:a B:b C:c foo:nil D:d];
}

但我不确定这样是否可行。代码似乎正常运行。

1个回答

16

是的,这是完全可以接受的,而且实际上非常常见。

这就是为什么我们有所谓的“指定初始化方法”。这个初始化方法是所有其他初始方法重定向到的方法(通常如此)。


哇,我肯定需要在提问之前再多搜索一下。非常感谢!显然还要等待10分钟才能接受。很快会接受的。 - Kalle
5
@Kalle 理论上所有答案都在文档中。然而,提出问题仍然值得做(通常是这样),因为这样其他人将来可以更轻松地找到信息。 :) - Dave DeLong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接