我習慣於編寫共享的- (void) initialize
函數來處理Objective-C中的initWithFrame
和initWithCoder
函數。如何在Swift中的兩個init函數之間共享初始化函數?
但是,在Swift中我似乎沒有被允許在調用super.init()
之前調用一個函數來做到這一點,因爲在此之前需要對屬性進行初始化。
我認爲編寫一個initWithFrame
不再那麼重要,但如果我有一個自定義類有多個init方法,我想通過使用共享初始化程序來簡化? )
required init?(coder aDecoder: NSCoder) {
self.initialize()//use of self in method call initialize before super.init()
super.init(coder: aDecoder)
}
super.init後(:
super.init()之前
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.initialize()//property not initialized at super.init call
}
`
@vadian有你的答案。在初始化超視圖之前和之後,您還可以將「共享」部分分解爲所需*。雖然不是一行代碼(或函數),但它確實簡化了一些事情。 – dfd