簡體   English   中英

清除UITextField的最佳方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM