在扩展中添加便利初始化器并在子类上调用它们

时间:2014-08-27 21:22:10

标签: cocoa-touch inheritance swift

我正在尝试在Swift中向UIView添加扩展方法,如下所示:

extension UIView {
    convenience init(superview: UIView) {
        self.init(frame: CGRect())
        superview.addSubview(self)
    }
}

稍后,我可以使用这个新的初始化程序,但仅限于UIView ,我无法弄清楚如何在我自己的子类上使用它。

var poView : UIView = UIView(superview: someSuperview) // Just dandy
var myViewSubclass : MyViewSubclass(superview: someSuperview) // No good.

现在,我的视图子类同时实现init(frame: CGRect)init(coder: NSCoder),目前没有其他任何内容。

为什么我不能使用我的便利初始化程序?

1 个答案:

答案 0 :(得分:2)

为了自动继承添加的便利初始化工具,您的MyViewSubclass也必须覆盖从init()继承的普通NSObject

class MyViewSubclass {
    override init() {
        super.init()
    }

    ...
}