它开始时是一个空字符串而不是 nil。即使它被显式设置为 nil,它仍然是一个空字符串。我不明白。也许是为了通过分配 nil 来轻松清除?用它编写代码很笨拙。
var textField = UITextField()
print(textField.text) // prints "Optional("")"
textField.text = nil
print(textField.text) // prints "Optional("")"
这是历史性的事情。UITextField
空字符串和空字符串之间没有任何区别nil
细绳。在 Objective-C 中,没有必要区分它们,因为你可以调用方法nil
在 Objective-C 中。
另外,Objective-C 中没有办法阻止用户分配nil
到一个属性。
由此产生的合同是text
可以是可选的。在 Objective-C 中这没有什么区别。
在 Swift 中我们无能为力,因为UITextField.text
合同必须改变,可能会破坏许多已经编写的代码。请注意,即使nil
永远不会从该方法返回,您仍然可以分配nil
重置该值。
你可以在旧的 API 中找到数百种类似的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)