最近我意识到我需要为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”的东西.这是所有其他初始化程序重定向到的初始化方法(通常).