基于性能的快速

时间:2017-08-05 04:19:15

标签: ios swift swift3

分配后我需要清除UITextField的值。我可以使用nil或空字符串""完成此操作。像这样在一个应用程序中有500个UITextField

表演&记忆基于哪一个好?

参考代码:

let a = ""
let b:String? = nil
print(a.isEmpty) //true
print(b?.isEmpty  ?? "value is nil") /*Value is nil*/

注意: 还有500个隐式展开的变量。我知道在隐式展开var时它很糟糕。但是,我必须这样使用。

2 个答案:

答案 0 :(得分:3)

如果我想在nil和" "之间选择。我将使用nil参数,因为nil比发送空字符串更好,因为根据我的字符串将被视为字符串,即使其长度为char长度nil空的,实际上会节省内存没有太大的区别。但是,如果有UITextFields 500,那么nil就很重要了。

答案 1 :(得分:1)

nil (id)0用于将空指针表示为objective-c对象。

""是一个空字符串常量或字符串,其长度为0。

if dictionary.value(forKey:"aString" ) == nil

检查字典中是否存在特定密钥。

if dictionary.value(forKey:"aString")  == ""

此行检查字典中是否有带“aString”键的条目,并将该条目与空字符串进行比较。结果将是以下之一:

    如果您的密钥没有此类条目,则
  • 为false
  • 如果您的密钥有条目且该条目为空字符串,则
  • 为true

Swift 中,nil不是指针 - 它缺少某种类型的值。任何类型的可选项都可以设置为nil,而不仅仅是对象类型。

可选字符串

let myOptionalString: String? = nil
var myOptionalString: String? // myOptionalString is automatically set to nil

注意:如果您定义了一个可选变量而未提供默认值,则该变量将自动设置为nil:

非可选字符串:检查零长度。

let myString: String = ""

if myString.isEmpty {
    print("String is empty.")
    return // or break, continue, throw
}