iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
自我挑戰組

打造專案管理 iOS App 系列 第 27

安能取熊掌而捨魚? 便捷初始化器語法

  • 分享至 

  • xImage
  •  

安能取熊掌而捨魚? 便捷初始化器語法

今天聽到坐在我旁邊的 Ray 提到便捷初始化語法,我驚了,事實上我完全不知道那是什麼,我知道初始化,但是...

既然有 init,為何還要有 convenience init ?

指定的初始化程序是創建類型的新實例的默認方法。還有其他一些被稱為便捷初始化器,可以幫助您更輕鬆地完成常見任務,但是這些是您指定的初始化器的補充,而不是替代的。

蘋果官方對於 Designated Initializer 和 Convenience Initializer 提出了三條規則。

Designated Initializer 可以呼叫它父類別的 Designated Initializer。

Rule 1
A designated initializer must call a designated initializer from its immediate >superclass.

Convenience Initializer 可以呼叫其它 Convenience Initializer 。

Rule 2
A convenience initializer must call another initializer from the same class.

Convenience Initializer 最終必須呼叫 Designated Initializer。

Rule 3

A convenience initializer must ultimately call a designated initializer.

在寫程式中,初始化 (Initializer) 是我們最不可避免的函式,我們往往會寫了一堆函式來初始化物件,但為了重複利用,所以我們常常會呼叫最基本的初始化函式,來節省我們開發的時間。但在 Swift 中,將初始化分為 Designated Initializer 和 Convenience Initializer,使用方法如何呢?讓我們直接來實際看例子來做一個簡單的教學。

來源:https://www.inote.tw/swift-designated-convenience-initializer

init(){}
    
    convenience init(_ loadingVC:UIViewController){
        self.init()
        loadingDelegate = loadingVC
    }

這是個很經典的便捷初始化器


上一篇
安能取熊掌而捨魚? 淺談觀察者模式
下一篇
# 安能取熊掌而捨魚? 玩轉陰影
系列文
打造專案管理 iOS App 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言