0

の と の違いを知りnilたい@""ですNSMutableString

NSMutableString毎秒文字列値をきれいにする必要があります。

そう

myMutableString = nil;

また

myMutableString = @"";

どちらがきれいにするのが良いですか、そしてその理由は何ですか?

4

2 に答える 2

4

アップデート


変更可能な文字列の場合、最初に次のように割り当て/初期化する必要があります。

NSMutableString *myMutableString = [[NSMutableString alloc] init];

多分あなたはそれをしたかもしれませんが、次のように文字列をリセットする必要があります:

[myMutableString setString: @""];

したがって、 を書く代わりにmyMutableString = @""、上記のコードを使用してください。


割り当てmyMutableStringた場合nil、有効なポインター/オブジェクトではなく、メッセージまたはアクションに応答できません。実際に に設定すると@""、メッセージ、メソッド、およびアクションに応答できる完全に有効なオブジェクトであり、長さ 0 の文字列が含まれているだけです。

myMutableString = nil;

[myMutableString appendString: @"It now contains a valid string!"]; 

文字列がnil

myMutableString = @""; 

[myMutableString appendString: @"It now contains a valid string!"]; 

これは発生する可能性myMutableStringがあり、有効なオブジェクトであり、メッセージに応答できます。そして、何を推測すると、文字列が追加されました!

そのため、文字列オブジェクトは引き続き初期化でき、文字を含まない実際の文字列値を持つことができます。配列が有効で、その中にオブジェクトが 0 個あるのと同じように。そうでなければ、どのように追加しますか!?

ただし、NSMutableStringのシナリオでは、実際に割り当て初期化する必要がある場合があります....誰かが明確にしてください。

明らかに、への割り当ての@""方が優れていますが、実際にはシナリオによって異なります。nil変数を新しい文字列オブジェクトに再割り当てしない限り、なぜに割り当てたいのかわかりません。

于 2013-01-19T09:58:55.097 に答える
2

そのなかで何も

使用する

[myMutableString setString: @""];

文字列をリセットします。

オブジェクトは同じままです。そのコンテンツをクリアするメソッドを呼び出します。

于 2013-01-19T10:07:28.573 に答える