2017-08-05 6 views
1

割り当て後にUITextFieldの値をクリアする必要があります。私はnilまたは空の文字列""でそれを行うことができます。このように1つのアプリにはUITextFieldが500個あります。即時の空と空の文字列のパフォーマンスに基づく差

パフォーマンス&どちらが良いですか?

リファレンスコード:

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、はい、あなたは正しいです。知っている。しかし、私はパフォーマンスの違いを知る必要があります ""と 'nil'ありがとうございます。 –

+2

'nil'は空文字列より優れていると思います。' nil'はメモリからオブジェクトをクリアしますが、空文字列はまだメモリを占有しています。 –

答えて

3

nilと" "の間で選択したい場合。私はnilのように空の文字列を送信するよりも優れているので、文字列は文字列として扱われます。charの長さとnilの文字列が空であるとしても実際には大きな違いはありません。しかし、500の場合にはUITextFieldsはいそれはnilのために行く。

+0

素敵な答え:)仲間ありがとうございました:) –

+0

お手伝いをして幸いです:) –

1

nil (id)0は、objective-cオブジェクトとしてnullポインタを表すために使用されます。

""

は、その長さが特定のキーが辞書に存在する場合0

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

空である空の文字列定数または文字列です。

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

この行では、辞書に "aString"キーを持つエントリがあるかどうかをチェックし、そのエントリを空の文字列と比較します。結果は、次のいずれかになります。のためのそのようなエントリがない場合

  • が偽のあなたの鍵
  • は、あなたの鍵のエントリがあります場合にtrueになると、そのエントリはでは、空の文字列

ですSwiftnilはポインタではありません。特定の型の値が存在しません。任意の型のオプションは、オブジェクト型だけでなく、nilに設定することもできます。

省略可能なString

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

非オプション文字列:デフォルト値を設けることなく、オプションの変数を定義した場合、変数は自動的にnilに設定されています:長さがゼロであることを確認してください。

+0

いいえ、ポインタは良いものです..ありがとうbro :) –

関連する問題