Warum gibt NSString stringWithString den Zeiger auf die kopierte Zeichenfolge zurück?

Ich versuche eine zu kopierenNSString Wert aus einemNSMutableArray in eine neue Variable.NSString stringWithString kehrt zurückNSString mit der gleichen Speicheradresse wie das Objekt in meinem Array. Warum?

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        NSMutableArray *arr = [NSMutableArray arrayWithObject:@"first"];

        NSLog(@"string is '%@' %p", [arr objectAtIndex:0], [arr objectAtIndex:0]);

        // copy the string
        NSString *copy = [NSString stringWithString:[arr objectAtIndex:0]];
        NSLog(@"string is '%@' %p", copy, copy);

    }
    return 0;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage