したがって、などで文字列を頻繁に操作する予定がある場合は、stringByAppendingString
NSMutableString型の変数を使用する必要があると確信しています。
しかし、私がこのようなことをしている場合はどうなりますか?
UILabel *someLabel = [[UILabel alloc] init];
[someLabel setText: [[someDictionary objectForKey:@"some_key"] stringByAppendingString:@"some other string"];
NSStringで使用すると、最初のNSStringに関連付けられたポインターが移動し、追加によって作成された新しい文字列を指すため、リークが発生することを読みstringByAppendingString
ました。一方、NSMutableStringでは、ポインターは常にその可変文字列を指します。
stringByAppendingString
だから私の質問は、文字列であるが明示的にNSStringまたはNSMutableStringではないものを呼び出すと、暗黙的に何が起こっているのかということです。上記の場合、辞書のキーの値などです。これは間違っていますか?以下のようなことをする必要がありますか?
[[[NSMutableString stringWithString:[someDictionary objectForKey:@"some_key"]] stringByAppendingString:@"some other string"]]