Hallo,
müsste bei dem Code nicht bei beiden NSLog-Befehlen (sowohl beim Pointer, als auch beim Inhalt) das Selbe rauskommen?
In der Variablen test2 (vom Typ NSString) speichere ich doch nur die Speicheradresse (nicht die Zeichenkette) von der Variablen test.
Danach ändere ich die Zeichenkette, die hinter der Speicheradresse steht.
Nach meiner Meinung, müsste also der 1. und der 2. NSLog-Befehl sowohl von der Pointeradresse als auch vom Inhalt (der Zeichenkette) exakt das Gleiche liefern. Das tut er aber nicht.
Er verhält sich meiner Meinung nach so, als hätte ich geschrieben:
müsste bei dem Code nicht bei beiden NSLog-Befehlen (sowohl beim Pointer, als auch beim Inhalt) das Selbe rauskommen?
Code:
NSString *test = @"test";
NSString *test2 = test;
test = @"geändert";
NSLog(@"Pointer von test: %p , inhalt von test: %@", test, test);
NSLog(@"Pointer von test2 %p , inhalt von test2 %@", test2, test2);
In der Variablen test2 (vom Typ NSString) speichere ich doch nur die Speicheradresse (nicht die Zeichenkette) von der Variablen test.
Danach ändere ich die Zeichenkette, die hinter der Speicheradresse steht.
Nach meiner Meinung, müsste also der 1. und der 2. NSLog-Befehl sowohl von der Pointeradresse als auch vom Inhalt (der Zeichenkette) exakt das Gleiche liefern. Das tut er aber nicht.
Er verhält sich meiner Meinung nach so, als hätte ich geschrieben:
Code:
NSString *test2 = [test copy];