ios – 覆盖init和必需init之间的区别? – 迅速

前端之家收集整理的这篇文章主要介绍了ios – 覆盖init和必需init之间的区别? – 迅速前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有时会看到这样的视图,在两个不同的init方法中有相同的setup()函数. init方法之间有什么区别,为什么在两个方法调用相同的setup()?
class BigButton: UIButton {

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setup()
    }

    fileprivate func setup() {
        // set up stuff
    }
}

解决方法

当您以编程方式创建视图(在本例中为按钮)时,将使用override init(frame:CGRect).

从storyboard / xib创建视图时使用必需的init?(编码器:NSCoder).

因为后者是必需的,你必须实现它的身体.但是,如果您不打算手动创建按钮,则不需要第一个按钮,可以省略

在两者中都调用了setup,因为无论您选择创建按钮,都要设置其自定义行为,以便按预期工作

猜你在找的iOS相关文章