Swift3.0 在iOS8.0設備上無法加載xib 的問題

最近公司項目基本完結(jié),在測試的時候發(fā)現(xiàn)一個問題:iOS8.0系統(tǒng)無法加載xib,運行的時候直接崩潰。po查找原因的時候,發(fā)現(xiàn)xib中的控件在ViewDidLoad方法中是個nil。這種情況說明xib在程序運行的時候,根本沒有加載到程序中。

經(jīng)過多方查資料。只需要這樣子就好了?

init() {

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

}

required init?(coder aDecoder: NSCoder) {

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

}

這是為什么呢??

與ObjC不同的是,Swift子類,默認情況下,不會繼承父類的構(gòu)造器(初始化函數(shù))。這樣可以防止錯誤的既傳承并使用父類的構(gòu)造器生成錯誤的實例(可能導致子類中的屬性沒有被賦值而正確初始化).與方法不同的一點是。在重載構(gòu)造器的時候,你不需要添加override關(guān)鍵字。

雖然子類不會默認繼承來自父類的構(gòu)造器, 但是我們也可以通過別的方法來自動繼承來自父類的構(gòu)造器, 構(gòu)造器的繼承就遵循以下的規(guī)則:

?1 如果子類沒有定義任何的指定構(gòu)造器, 那么會默認繼承所有來自父類的指定構(gòu)造器.

?2 如果子類提供了所有父類指定構(gòu)造器的實現(xiàn), 不管是通過規(guī)則 1繼承過來的, 還是通過自定義實現(xiàn)的, 它將自動繼承所有父類的便利構(gòu)造器.

如需了解更多,請查看 swift開發(fā)文檔 ?初始化?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 構(gòu)造過程 構(gòu)造過程是使用類、結(jié)構(gòu)體或枚舉類型的實例之前的準備過程。在新實例可用前必須執(zhí)行這個過程,具體操作包括設置...
    蠱毒_閱讀 780評論 0 2
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,190評論 1 10
  • 本章將會介紹 存儲屬性的初始賦值自定義構(gòu)造過程默認構(gòu)造器值類型的構(gòu)造器代理類的繼承和構(gòu)造過程可失敗構(gòu)造器必要構(gòu)造器...
    寒橋閱讀 837評論 0 0
  • 123.繼承 一個類可以從另外一個類繼承方法,屬性和其他特征。當一個類繼承另外一個類時, 繼承類叫子類, 被繼承的...
    無灃閱讀 1,491評論 2 4
  • 世界好大,大到無法一眼望穿,路上行人好多,多到令人眼花繚亂。我不知道在下一秒,下一個路口會遇見誰,抑或在某個轉(zhuǎn)身,...
    風箏simy閱讀 273評論 1 1

友情鏈接更多精彩內(nèi)容