在Swift中是否可以创建以超类对象作为参数的初始化器?

时间:2018-03-31 16:03:05

标签: ios swift uikit

例如,我有一个简单的UIImage子类,它有一些额外的属性:

class Image: UIImage {

    var poeticDescription: String?

}

我想要的是这样的:

init(with: UIImage) { /* something to do here */ }

2 个答案:

答案 0 :(得分:0)

如果源对象是超类对象,则无法再次初始化现有对象。当然,您可以使用超类对象作为参数调用初始化程序,但这将创建一个全新的对象。

init(with superclassObject: SuperClass) {
    // Do some stuff with superclass object
}

继承的常用方法是在继承的初始化程序中调用超类初始值设定项:

init() {
    super.init()
}

但是,在这种情况下,你不能再使用已经存在的超类对象来重新初始化它。

也许你可以解释一下,你想要实现的目标。然后我们可以帮助您找到正确的方法。

答案 1 :(得分:0)

我认为你想要实现的是拥有一个带有自定义属性的UIImage子类。您必须使用源图像的数据调用超级初始化程序。对于UIImage子类化很棘手,请查看this answer示例。