間違いなくメモリリークが発生する可能性があります。「安全」かどうかを判断するには、基礎となるNSStringオブジェクトの実際の実装について多くのことを知っている必要があるため、再利用には注意する必要があります。したがって、ガベージコレクションを使用していない場合は、安全のために、変数を現在のように再利用しないでください。
たとえば、これは完全に安全です。
NSString *result = @"example";
result = [result stringByAppendingString:@" test"];
最初の文字列は実際にはobjective-c文字列定数だったからです。ただし、これによりメモリリークが発生します。
NSString *result = [[NSString alloc] initWithUTF8String:argv[0]];
result = [result stringByAppendingString:@" something more"];
ただし、そもそも結果を所有したことがないため、これは安全です。
NSString *result = [NSString stringWithUTF8String:argv[0]];
result = [result stringByAppendingString:@" something more"];
したがって、基本的に、オブジェクトを所有していない場合、またはガベージコレクションをオンにしている場合は、安全です。ただし、元のオブジェクトを所有していてこれを行うと、メモリリークが発生します。