Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在self中,在init方法中调用init方法可以吗?_Objective C_Initialization - Fatal编程技术网

Objective c 在self中,在init方法中调用init方法可以吗?

Objective c 在self中,在init方法中调用init方法可以吗?,objective-c,initialization,Objective C,Initialization,最近我意识到我需要为一个助手类的init方法添加一个参数。helper类处理警报视图,因此它在init中已经有一组参数,这些参数被查看、调整,然后发送到警报视图 因为我在不同的地方使用这个方法,所以我不想冒崩溃的风险(错过其中一个地方,让客户手中有一个“无法识别的选择器”),所以我决定添加第二个init方法 即 及 现在我只是简单地将第一个实现复制粘贴到foo:one中,但理想情况下最好是将第一个调用作为第二个调用,即 - (id)initWithA:a B:b C:c D:d { re

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

因为我在不同的地方使用这个方法,所以我不想冒崩溃的风险(错过其中一个地方,让客户手中有一个“无法识别的选择器”),所以我决定添加第二个init方法

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

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

但我不确定这是否可以接受。代码似乎工作正常。

是的,这是完全可以接受的,实际上相当普遍


这就是为什么我们称之为“a”的原因。这是所有其他初始化者(通常)重定向到的初始化方法。

哇,在我问问题之前,肯定需要搜索更多。谢谢!我得等10分钟才能接受。将接受soonish。@Kalle理论上所有答案都在文档中。不过,还是(通常)值得问这个问题,这样其他人将来可以更容易地找到信息。:)
- (id)initWithA:B:C:foo:D:
- (id)initWithA:a B:b C:c D:d
{
    return [self initWithA:a B:b C:c foo:nil D:d];
}