繁体   English   中英

Swift`= String()`和`:String!`中的2个字符串初始化有什么区别?

[英]What is the difference between 2 strings initialization in Swift `=String()` and `: String!`

字串1:

var string1=String()

字串2:

var editTag: String!

最上面的一个声明并创建String一个实例。

底部声明了一个隐式展开的可选变量,该变量可以容纳String但不创建String的实例。

由于底部是可选的,因此在包含该类的实例之前,其值为nil 通过用!隐式展开它! 您保证它会被一个实例填充,通常在init函数或类似的函数中。 因此,在使用前无需检查它是否已装满或拆开。

第一行声明一个字符串变量,并用一个空字符串初始化它。

第二行还声明了一个字符串变量,但在这种情况下,它是一个隐式展开的变量。 在这一点上,该变量实际上并未初始化,并且任何对其进行访问的尝试都会产生“意外发现nil”异常。

以这种方式声明变量可以使您不必在初始化函数中初始化变量(通常必须这样做)。 当您要在诸如viewDidLoad的函数中初始化变量或从另一个视图控制器的prepareForSegue方法提供值时,可以使用此方法。

第一个将为字符串创建一个实例,如目标c中的alloc init。 第二个将声明字符串的未包装版本,但是该字符串将没有实例,并且在此字符串中没有值时访问此变量,它将崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM