【问题标题】:Is it okay to call an init method in self, in an init method?可以在self,init方法中调用init方法吗?
【发布时间】:2011-03-30 12:59:54
【问题描述】:

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

由于我在各个地方都使用该方法,因此我不想冒险崩溃(错过其中一个地方并在客户手中获得“无法识别的选择器”),所以我决定添加第二个初始化方法。

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

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

现在我只是将第一个的实现复制粘贴到 foo: one 中,但理想情况下最好将第一个调用设为第二个,即

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

但我不确定这是否可以接受。代码似乎运行良好。

【问题讨论】:

    标签: objective-c initialization


    【解决方案1】:

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

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

    【讨论】:

    • 哇,在我问什么之前肯定需要搜索更多。非常感谢!我必须等待 10 分钟才能明显接受。很快就会接受。
    • @Kalle 理论上所有的答案都在文档中。但是,仍然(通常)值得提出这个问题,以便其他人将来可以更轻松地找到信息。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多