【问题标题】:Optional String vs Empty可选字符串与空字符串
【发布时间】:2018-01-09 10:52:06
【问题描述】:

字符串?与“”

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

label.text = ""
label.text = nil

因为text 属性是Optional<String>

他们为什么这样做?仅仅是为了兼容Objective-C,还是有其他实际原因?存储nil 是否比存储"" 更节省内存? String? 的性能会比 String? 稍好一些吗?

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

【问题讨论】:

标签: objective-c swift string null optional


【解决方案1】:

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

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

【讨论】:

  • 你知道字符串在 Swift 中是如何存储的吗?
  • 请注意,文本字段文本属性默认值为空字符串。即使您将 nil 分配给它并检查它是否为 nil,它也会返回 false
【解决方案2】:

当您将字符串放入“”时,您正在使用内存位置,它在内存中具有引用,但另一方面,如果您将字符串放入 nil,它将释放其在内存中的引用并释放该位置。

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 2010-09-05
    • 2011-12-06
    • 2016-04-24
    • 1970-01-01
    • 2017-03-31
    • 2017-08-30
    • 2015-01-23
    相关资源
    最近更新 更多