2015-02-08 90 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

相关问题