2017-08-05 131 views
1

我需要在分配後清除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。但是,我必須只使用那樣的。

+0

爲textFeild創建一個擴展文件,並使用該擴展名在您希望節省內存時清除這些值。我應該向你展示一個演示嗎? –

+0

@iOSGeek,是的兄弟你是對的。我知道。但是,我需要知道基於性能差異'''''和'無'謝謝。 –

+2

我覺得'nil'比空字符串好''nil'確實是從內存中清除它的對象,然而空字符串仍然佔用內存。 –

回答

3

如果我想在nil和" "之間選擇。我會去無參數nil比發送一個空字符串好,因爲根據我字符串將被視爲一個字符串,即使它的一個char長度和nil被視爲空,這實際上會節省內存沒有太大的區別。但是,如果是500 UITextFields是的,則重要的是nil

+0

不錯的答案:)謝謝兄弟:) –

+0

樂意幫忙:) –

1

nil (id)0用於表示作爲objective-c對象的空指針。

""是空字符串常量或字符串,其長度爲0

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

檢查特定鍵存在於字典。

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

此行檢查字典中是否存在帶「aString」鍵的條目,並將該條目與空字符串進行比較。其結果將是下列情況之一:

  • 是假的,如果有因爲沒有這樣的條目,你的關鍵
  • 是,如果有對你的鍵盤輸入真實的,並且條目爲空字符串

Swift,nil不是一個指針 - 它是沒有某種類型的值。任何類型的選項可以設置爲零,而不僅僅是對象類型。

可選String

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

注意:如果您沒有提供默認值來定義一個可選的變量,該變量將自動設置爲無給你:

非可選String:檢查零長度。

let myString: String = "" 

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

無是不是指針是好東西..謝謝兄弟:) –