为Swift属性赋值

时间:2014-11-07 16:33:49

标签: ios variables swift properties

我应该何时在swift中为属性赋值?

之间有什么区别
class Thing {
    var something:String = "Cool Thing"
}

和这个

class Thing {
    var something:String
    init(){
        something = "Cool Thing"
    }
}

实际上,当在init()上分配值时很明显,但是在使用第一段代码时是否赋值,哪种方法正确?

3 个答案:

答案 0 :(得分:2)

它们是相同的,但Apple建议使用默认属性值模式“如果属性始终采用相同的初始值”,则出于风格原因。请参阅The Swift Programming Language: Initialization默认属性值部分中的注释,其中包含:

  

默认属性值

     

您可以在初始化程序中设置存储属性的初始值,如上所示。或者,将默认属性值指定为属性声明的一部分。通过在定义属性时为其指定初始值来指定默认属性值。

     
    

注意:如果属性始终采用相同的初始值,请提供默认值,而不是在初始值设定项中设置值。最终结果是相同的,但默认值将属性的初始化与其声明更紧密地联系在一起。它使更短,更清晰的初始化程序,并使您能够从其默认值推断属性的类型。默认值还使您可以更轻松地利用默认初始化程序和初始化程序继承,如本章后面所述。

  

答案 1 :(得分:0)

您可以使用任何2.不同之处在于,如果您有多个初始化程序,则可能需要复制属性初始化。除此之外,这只是一个偏好问题。

答案 2 :(得分:0)

他们都应该做同样的事情。不首先初始化的主要区别在于,如果要将var指定为可选项并将其作为nil测试。否则分配值将是相同的。

var something:String?