美文网首页
Swift3.0 在iOS8.0设备上无法加载xib 的问题

Swift3.0 在iOS8.0设备上无法加载xib 的问题

作者: wely | 来源:发表于2017-08-18 20:27 被阅读7次

    最近公司项目基本完结,在测试的时候发现一个问题:iOS8.0系统无法加载xib,运行的时候直接崩溃。po查找原因的时候,发现xib中的控件在ViewDidLoad方法中是个nil。这种情况说明xib在程序运行的时候,根本没有加载到程序中。

    经过多方查资料。只需要这样子就好了 

    init() {

    super.init(nibName: "XXX", bundle: nil)

    }

    required init?(coder aDecoder: NSCoder) {

    fatalError("init(coder:) has not been implemented")

    }

    这是为什么呢? 

    与ObjC不同的是,Swift子类,默认情况下,不会继承父类的构造器(初始化函数)。这样可以防止错误的既传承并使用父类的构造器生成错误的实例(可能导致子类中的属性没有被赋值而正确初始化).与方法不同的一点是。在重载构造器的时候,你不需要添加override关键字。

    虽然子类不会默认继承来自父类的构造器, 但是我们也可以通过别的方法来自动继承来自父类的构造器, 构造器的继承就遵循以下的规则:

     1 如果子类没有定义任何的指定构造器, 那么会默认继承所有来自父类的指定构造器.

     2 如果子类提供了所有父类指定构造器的实现, 不管是通过规则 1继承过来的, 还是通过自定义实现的, 它将自动继承所有父类的便利构造器.

    如需了解更多,请查看 swift开发文档  初始化 

    相关文章

      网友评论

          本文标题:Swift3.0 在iOS8.0设备上无法加载xib 的问题

          本文链接:https://www.haomeiwen.com/subject/lpxzrxtx.html