在Swift中使用子类中添加的自定义参数实现自定义init

时间:2015-12-26 14:46:45

标签: swift subclass init

我正在尝试创建一个子类,在其中我将向SCNParticleSystem对象添加更多函数和属性。

Swift中的SCNParticleSystem头文件只声明了init

public convenience init?(named name: String, inDirectory directory: String?)

所以,我想要做的是使用与init相同的参数,还要像这样为init添加自定义参数,并为我的属性进行一些设置:

init how ? (particleSystemFileName:String, inDirectory:String, parentNode:SCNNode)
{
    init who ?

    <setup my stuff>
}

我只是想不通怎么做?

THX

1 个答案:

答案 0 :(得分:4)

从子类创建便利init以在超类中调用便利init是不可能的。为什么?初始化程序必须遵循3条规则:

  1. 指定的初始值设定项必须从其中调用指定的初始值设定项 直接超类。
  2. 便捷初始化程序必须从中调用另一个初始化程序 同一个班级。
  3. 便利初始化程序必须最终调用指定的 初始化程序。
  4. 图表显示了您可以使用初始化程序&amp;子类化(more on that topic):

    enter image description here

    您可以做的是某种setup()方法,它将使用给定属性自定义您创建的子类实例。