可选字符串与空

时间:2018-01-09 10:52:07

标签: objective-c swift string null optional

字符串? vs“”

为什么Apple在许多情况下使用optional String(但不是在所有地方)?例如,如果您有UILabel,则可以通过两种方式清除它:

label.text = ""
label.text = nil

因为text属性是Optional<String>

他们为什么这样做?它只是为了与Objective-C兼容,还是有其他任何实际原因?存储nil是否比存储""更节省内存? String?会比String?稍微好一点吗?

假设我需要创建一个带有text属性的结构或类,它可以为空。它应该是可选的吗?

2 个答案:

答案 0 :(得分:1)

当一个对象(在本例中为文本字段)为nil时,它不存在且不使用任何内存。另一方面,空字符串对象""占用内存并需要更多时间来检查。

是否使用选项或高度取决于您的任务。您应该在documentation中阅读有关指针和选项的更多信息。

答案 1 :(得分:1)

当您将字符串放入&#34;&#34;时,您正在使用内存位置它在内存中有一个引用,但另一方面,如果你将一个字符串放到nil,它将在内存中释放它的引用并释放该位置。