Ios 为Swift属性赋值
我应该在什么时候为swift中的属性赋值 两者的区别是什么Ios 为Swift属性赋值,ios,variables,swift,properties,Ios,Variables,Swift,Properties,我应该在什么时候为swift中的属性赋值 两者的区别是什么 class Thing { var something:String = "Cool Thing" } 还有这个 class Thing { var something:String init(){ something = "Cool Thing" } } 实际上,在init()上指定值是很明显的,但在使用第一段代码时,什么时候指定值?哪种方法正确 您可以使用这两个选项中的任何一个。不
class Thing {
var something:String = "Cool Thing"
}
还有这个
class Thing {
var something:String
init(){
something = "Cool Thing"
}
}
实际上,在init()上指定值是很明显的,但在使用第一段代码时,什么时候指定值?哪种方法正确 您可以使用这两个选项中的任何一个。不同之处在于,如果有多个初始值设定项,则可能需要复制属性初始化。除此之外,这只是偏好的问题。它们是一样的,但苹果出于风格原因建议使用默认属性值模式“如果属性始终采用相同的初始值”。请参见的“默认特性值”部分中的注释,其中说明: 默认属性值 可以从初始值设定项中设置存储属性的初始值,如上所示。或者,指定默认属性值作为属性声明的一部分。通过在定义特性时为其指定初始值,可以指定默认特性值 注意:如果属性始终采用相同的初始值,请提供默认值,而不是在初始值设定项中设置值。最终结果相同,但默认值将属性的初始化与其声明联系得更紧密。它使初始值设定项更短、更清晰,并使您能够根据其默认值推断属性的类型。默认值还使您更容易利用默认初始值设定项和初始值设定项继承,如本章后面所述
他们应该做同样的事情。不首先初始化的主要区别是,如果您想将var指定为可选变量,则测试为nil。否则,赋值将是相同的
var something:String?
好奇:即使在需要多个初始值设定项的情况下,我们也不需要复制属性init,因为我们使用指定的初始值设定项模式,对吗?您可以有多个指定的初始值设定项-并且ofc您不能从另一个调用,也不能使用公共的初始化函数。在这种情况下,唯一的选择是复制props初始化,或使用内联初始化注意:您将无法在Obj C中使用此初始化器您的意思是什么?如果Swift类中的属性具有默认值,则无论从Objective-C调用什么初始值设定项,这些值都将被初始化。I是错误的,因为:1。我在
init
方法中混合了“默认属性值”和“默认参数值”。2.带有默认参数值的Init在Obj-C中工作,但在一个特定情况下不适用于我。