为什么Apple在许多情况下使用optional String
(但不是在所有地方)?例如,如果您有UILabel
,则可以通过两种方式清除它:
label.text = ""
label.text = nil
因为text
属性是Optional<String>
。
他们为什么这样做?它只是为了与Objective-C兼容,还是有其他任何实际原因?存储nil
是否比存储""
更节省内存? String?
会比String?
稍微好一点吗?
假设我需要创建一个带有text属性的结构或类,它可以为空。它应该是可选的吗?
答案 0 :(得分:1)
当一个对象(在本例中为文本字段)为nil
时,它不存在且不使用任何内存。另一方面,空字符串对象""
占用内存并需要更多时间来检查。
是否使用选项或高度取决于您的任务。您应该在documentation中阅读有关指针和选项的更多信息。
答案 1 :(得分:1)
当您将字符串放入&#34;&#34;时,您正在使用内存位置它在内存中有一个引用,但另一方面,如果你将一个字符串放到nil,它将在内存中释放它的引用并释放该位置。