Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为Swift属性赋值_Ios_Variables_Swift_Properties - Fatal编程技术网

Ios 为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()上指定值是很明显的,但在使用第一段代码时,什么时候指定值?哪种方法正确 您可以使用这两个选项中的任何一个。不

我应该在什么时候为swift中的属性赋值

两者的区别是什么

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中工作,但在一个特定情况下不适用于我。