如何在外部模块中覆盖public init(frame :)?

时间:2018-11-03 05:52:17

标签: ios swift uiview initialization access-control

我正在学习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语言指南

  

具有公共访问权限或更高访问权限级别的类成员,只能在定义它们的模块内被子类覆盖。

所以我的问题是,如何在外部模块中覆盖它们(公共初始化)?

0 个答案:

没有答案