方便初始化与自初始化



为什么要使用方便的init而不是仅仅为类属性设置默认值?

方便的初始值设定项可用于与默认值无关的各种事情。它们可以提供数据转换或许多其他功能。在此示例中,方便的初始值设定项允许您将 Float 传递给需要 Int 的东西。

import Foundation
class X {
    let value: Int
    init(value: Int) {
        self.value = value
    }
    convenience init(rounding float: Float) {
        self.init(value: Int(round(float)))
    }
}

当然,这也可以写成指定的(非方便的(初始值设定项,但是委托给少量指定的初始值设定项会使子类化变得更加简单,并且可以减少代码重复(因此"方便"(。

您并不总是为类属性提供默认值,有时您会创建一个具有属性和方法的类,以及稍后创建该类的实例时可能会获得的属性的所有值。为此,使用 init。

最新更新