0

私はここで質問を見て回っていましたが、差別化をテス​​トするために独自のコードをテストしているときに、違いを示す簡単な例を見つけることができませんでした。

私が理解していることから、「NSString」などの「不変」文字列では、次のような文字列を変更するための「NSString」メソッドを実行できませんでした。

NSString *s = @"cat";

    s = [NSString stringWithString:@"blamp"];

    NSLog(@"%@", s);

しかし、それは機能します。

私や他の初心者に、うまくいかないこととその理由の非常に簡単な例を教えてください。tnx

4

1 に答える 1

2

ステートメント:

s = [NSString stringWithString:@"blamp"];

実際には、文字列「blamp」の新しいメモリ位置が作成され、の古いアドレスがsこの新しいアドレスに置き換えられます。

sそして、あなたは同じものが更新されていると感じます!!! 実際、ポインタは他のメモリアドレスを指しているようになりました。


文字列操作とは、同じ文字列を変更することを意味します。

NSString *s = @"cat";
[s appendString:@"s"];//tries to append to the same. this will through error.
//the above works with NSMutableString.
于 2013-03-03T16:56:39.137 に答える