2015-02-08 89 views
5

快速使用默認屬性值而不是在初始化程序中設置它有什麼缺點嗎?Swift:初始化程序中的默認屬性vs設置

例如,

class Foo: UIViewController { 
    let value = UIRefreshControl() 
} 

class Bar: UIViewController { 
    var value : UIRefreshControl! 

    // or using init() 
    override func viewDidLoad() { 
     self.value = UIRefreshControl() 
    } 
} 

默認屬性值看起來更簡潔和優雅,但我不認爲他們會在代碼示例在那裏,它們可以用來使用。

回答

2

唯一的缺點是每次創建對象的實例時都會設置默認屬性值,即使隨後在一個或多個初始化程序中覆蓋了屬性。如果你只是分配默認的數值,這可能不是問題,但如果有一個類的構建昂貴,你最終可能會做兩次工作。

+0

啊,但在理論上,如果它是一個常數與'let'那麼這不會是一個正確的問題?儘管'let'具有默認值會使類的擴展性更差...... – 2015-02-08 05:29:47

+1

實際上,您可以在初始化程序中重新分配'let'聲明的屬性。奇怪而真實! – 2015-02-08 05:41:13

+1

此外,只是想補充一點,我認爲默認屬性值很好,我儘可能使用它們。答案是唯一的缺點 - 有幾個積極的原因使得它們幾乎在所有情況下都值得。 – 2015-02-08 05:42:38

相關問題