1

私は文字列を持っています

NSString hi;

そして、どの値がそれに初期化されるのかわかりません。nil、空の文字列、何でもかまいません。

使用することに何か利点はありますか

if (![hi length])

vs

if (![hi isEqualToString:@""])

どちらの場合も、空の文字列、nil、およびその他のタイプの文字列に対して同じ値を返すようです。長さが効率的であるため、長さが優れていると思います。isEqualToStringが比較を行う必要があるのに対し、変数を返すだけです。

4

3 に答える 3

7

彼らは同じことをしません。

[hi length]nilまたは空の文字列の場合は0を返し、その他の文字列の場合は非ゼロを返します。

[hi isEqualToString:@""]hiが空の文字列の場合は1を返し、hiがnilまたは空でない文字列の場合は0を返します。

つまり、hi2行のコードで同じ結果が得られる値は。だけですnil

オプション#1の動作(nilまたは空の文字列を「空白」として扱い、その他の値を「空白ではない」として扱う)が必要だったので、それを使用します。

于 2012-11-21T20:19:03.883 に答える
4

使用することに何か利点はありますかif (![hi length])

はい。空の文字列とnil同時にチェックできます。isEqualToString:文字列がnil、の場合、送信されたメッセージはゼロを返すため、これを行うことはできません。そのため、空の文字列と同じようには見えないため、別のチェックが必要になります。

ちなみに、わかりやすくするために、の使用を検討する必要がありますif (hi.length != 0)

于 2012-11-21T20:19:38.040 に答える
2

私は次のことをします

if (hi && ![hi isEqualToString:@""]) {

}

![hi isEqualToString:@""]hiである場合、単独で真になりますnil

于 2012-11-21T20:26:02.533 に答える