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