[英]Best way to clear a UITextField
對於IBOutlet UITextField
,在內存管理或其他原因如何清除文本值方面是否重要?
textFieldX.text = nil
要么
textFieldX.text = @"";
在objective-c中,可以發送一個nil
對象,而@""
是一個靜態的NSString *
。 我不確定每個@""
指向內存中的同一個對象,或者它是否分配了一堆1字節的空終止字符串。
沒什么大不了的,只是想我會問社區。 謝謝。
就個人而言,我會更少考慮這里的內存使用情況,更多地考慮代碼可維護性。
對我來說,標簽總是有一個字符串是有道理的。 在將來,有人可能會嘗試附加標簽值,將其保存在數據庫中,將其包裝在xml中等等。在這種情況下,空的NSString對我來說更有意義,即0x0。
我通常做textFieldX.text = @"";
只是為了清楚。 這有助於我記住該值應該是一個字符串,並且我可以將所有標准字符串方法傳遞給它。
我建議你使用nil,因為我發現當你使用@“”時,占位符沒有在中心對齊(如果它必須對齊)。 看,我是如何更改代碼以使占位符正確對齊的。
wordTextField.textAlignment = UITextAlignmentCenter;
//wordTextField.text = @"";
wordTextField.text = nil;
translationTextField.textAlignment = UITextAlignmentCenter;
//translationTextField.text = @"";
translationTextField.text = nil;
字符串總是在Objective-C中復制,因此第二個選項很可能是創建另一個字符串,然后指向它。 這樣,我認為你是對的。
為了扮演魔鬼的擁護者,我會假設編譯器優化選項B來執行類似選項A的操作。 就個人而言,我總是會做選項B,因為就你想要完成的最終操作而言,它更具可讀性。
更新:我沒有找到以不同方式實現目標的方法,但您可能對此花絮感興趣(來自Apple UITextField Docs ):
clearButtonMode
控制標准清除按鈕何時出現在文本字段中。
@property(非原子)UITextFieldViewMode clearButtonMode
討論
標准清除按鈕顯示在文本字段的右側,以便用戶快速刪除文本。 此按鈕基於為此屬性設置的值自動顯示。
此屬性的默認值為UITextFieldViewModeNever。
我認為這將允許您為用戶設置清除文本字段的功能。
我發現使用textField.text = nil;
對我的項目有不良影響。 我正在建一個計算器。
使用上述代碼時,按下清除按鈕后,屏幕上不會顯示數字。
textField.text = @"";
對我有益。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.