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

最近公司项目基本完结,在测试的时候发现一个问题: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开发文档  初始化 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 构造过程 构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置...
    蛊毒_阅读 4,042评论 0 2
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,481评论 1 10
  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 4,160评论 0 0
  • 123.继承 一个类可以从另外一个类继承方法,属性和其他特征。当一个类继承另外一个类时, 继承类叫子类, 被继承的...
    无沣阅读 5,281评论 2 4
  • 世界好大,大到无法一眼望穿,路上行人好多,多到令人眼花缭乱。我不知道在下一秒,下一个路口会遇见谁,抑或在某个转身,...
    风筝simy阅读 1,652评论 1 1

友情链接更多精彩内容