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

标签 objective-c initialization

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

由于我在不同的地方使用该方法,所以我不想冒崩溃的风险(错过其中一个地方并在客户手中得到一个“无法识别的选择器”)所以我决定添加第二个 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];
}

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

最佳答案

是的,这是完全可以接受的,而且实际上很普遍。

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

关于objective-c - 在 init 方法中调用 self 中的 init 方法可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495213/

相关文章:

ios - 如何更改多个按钮图像和条件

ios - 从周数获取日期,部分标题数为周数

objective-c - ALAssetsGroupLibrary 不包含视频项

c - 初始化全局变量适用于整数文字但不适用于 const 类型变量

php - 在同一个文件中找不到类

iphone - 使用 UICollectionViewFlowLayout 在 UICollectionView 的第一项上进行左填充

ios - UIBezierPath 给出 CGContextRestoreGState 错误

C - 在结构中声明和初始化数组

c - 未指定长度的数组的问题

java - 变量可能尚未初始化?