It definitely can result in memory leaks. You have to be careful about reusing in that you have to know a lot about the actual implementation of the underlying NSString object to decide if you're "safe" or not. So, if you're not using garbage collection, to be safe, you should not reuse variables the way you have.
For example, this is totally safe:
NSString *result = @"example";
result = [result stringByAppendingString:@" test"];
because the initial string was actually an objective-c string constant. This, however, would result in a memory leak:
NSString *result = [[NSString alloc] initWithUTF8String:argv[0]];
result = [result stringByAppendingString:@" something more"];
This, however, would be safe since you never owned result in the first place:
NSString *result = [NSString stringWithUTF8String:argv[0]];
result = [result stringByAppendingString:@" something more"];
So basically, if you don't own the object or you have garbage collection turned on, it is safe. If, however, you own the original object and you do this, you will be leaking memory.