在 Swift 的子类中实现带有自定义参数的自定义初始化
Implement a custom init with added custom parameters in subclass, in Swift
我正在尝试创建一个子类,我将在其中向 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>
}
我只是不知道该怎么做?
感谢
只是不可能从 subclass 创建 convenience init 来调用 superclass 中的 convenience init。为什么?初始化程序必须遵循 3 条规则:
- 一个指定的初始化器必须从它的
立即超class.
- 便利初始化器必须调用另一个初始化器
相同 class.
- 便利初始化器最终必须调用一个指定的
初始值设定项。
显示您可以使用初始化器和子classing (more on that topic) 实际执行的操作的图表:
您可以使用某种 setup()
方法来自定义您创建的具有给定属性的 subclass 实例。
我正在尝试创建一个子类,我将在其中向 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>
}
我只是不知道该怎么做?
感谢
只是不可能从 subclass 创建 convenience init 来调用 superclass 中的 convenience init。为什么?初始化程序必须遵循 3 条规则:
- 一个指定的初始化器必须从它的 立即超class.
- 便利初始化器必须调用另一个初始化器 相同 class.
- 便利初始化器最终必须调用一个指定的 初始值设定项。
显示您可以使用初始化器和子classing (more on that topic) 实际执行的操作的图表:
您可以使用某种 setup()
方法来自定义您创建的具有给定属性的 subclass 实例。