我正在学习iOS,并在访问控制部分遇到了这个问题。这是示例:
class MyClass: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
制作UIView的子类时,通常会看到那些重写/必需的init
override init(frame: CGRect)
required init?(coder aDecoder: NSCoder)
,但是在UIView接口文件中将其声明为公共访问,例如此处。
open class UIView: UIResponder, ... {
...
public init(frame: CGRect)
public init?(coder aDecoder: NSCoder)
...
而且显然是根据Swift语言指南
具有公共访问权限或更高访问权限级别的类成员,只能在定义它们的模块内被子类覆盖。
所以我的问题是,如何在外部模块中覆盖它们(公共初始化)?