objective-c – 可以在init方法中调用init方法吗?

最近我意识到我需要为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];
}

但我不知道这是否可以接受.代码似乎工作正常.

解决方法

是的,这是完全可以接受的,实际上很常见.

这就是为什么我们有一个叫“Designated Initializer”的东西.这是所有其他初始化程序重定向到的初始化方法(通常).

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...