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,因为无论您选择创建按钮,都要设置其自定义行为,以便按预期工作

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...