0

私はsetStringValueで独特の状況にあります:そして誰かがこれを片付けることができることを望んでいます:

次の理論的な例(リテラルではない)コードを使用します。

NSString *myVar;

[myOutlet setStringValue:myVar];

次のような文字列値の場合は次のようになります。

myVar = @"hello";

ポインタがmyOutletに渡され、NSTextFieldはmyVarと同じメモリ位置を指し、基本的に同じになります。本質的に:

myVar == [myOutlet stringValue];

TRUEを返します。

でも

この状況では:

myVar = @"";

ポインタを渡していないように見えますが、NSTextFieldは、空の文字列を格納するための独自の独立したメモリ位置を作成しています。

myVar == [myOutlet stringValue];

FALSEを返します。

誰かがこれが本当かどうかを確認できますか?もしそうなら、その理由を説明できますか?これが、私が取り組んでいるコードの一部で抱えている非常に複雑な問題の原因であると信じており、問題の根本に頭を悩ませようとしています。

ありがとう!

4

1 に答える 1

2

基本的に、最初の状況がうまくいく可能性はまったくありません。これらのポインターが等しいことは絶対に保証されていません。文字列を比較する必要がある場合は、-isEqualToString:always を使用してください。

あなたが実行しているのは、おそらく、@"hello"複数回保存することを避けるための、ある種の最適化です。これがいつ発生するか、または発生しないかを知る方法はなく、将来、またはデバイスごとに変更される可能性があります.

于 2012-05-23T02:28:38.043 に答える