- Registriert
- 13.12.09
- Beiträge
- 266
In einem Buch habe ich ein Beispiel zu den Methoden im Titel.
Ich habe mir erstmal unabhängig davon meine gedanken gemacht.
Sagen wir ich schreibe folgende Zeile:
dann zeigt newString auf irgendeine Speicherzelle sagen wir
es ist die Speicherzelle 1. Automatisch erhöht sich auch der retain Count um 1.
Dann habe ich eine zweite Zeile:
string2 zeigt jetzt auf die gleiche Speicherzelle wie newString.
Der retian Count von beiden Objekte ist jetzt 2.
Dann folgt eine dritte Zeile:
Jetzt würde ich annehmen das sich der retain Count von newString nicht erhöht,
da das Objekt kopiert und dessen Inhalt in einer anderen Speicherzelle gespeichert wird.
Mein Buch sagt das ebenfalls.
Aber als ich dieses Beispiel in Xcode eingegeben habe, hab ich festgestellt, dass nach dem copy-Aufruf
der retain Count von newString = 3 ist.
Also wiederspricht sich das Ganze. Wie gesagt in meinem Buch steht der bleibt weiterhin auf 2.
Also was ist da falsch? Wie kann das sein? Das verstehe ich nicht. Kann mir da jemand weiterhelfen?
Ihr könnt das ja mal selbst ausprobieren.
LG
Ich habe mir erstmal unabhängig davon meine gedanken gemacht.
Sagen wir ich schreibe folgende Zeile:
Code:
NSString *newString = [NSString new]
es ist die Speicherzelle 1. Automatisch erhöht sich auch der retain Count um 1.
Dann habe ich eine zweite Zeile:
Code:
NSString *string2 = [newString retain]
Der retian Count von beiden Objekte ist jetzt 2.
Dann folgt eine dritte Zeile:
Code:
NSString *kopie = [newString copy]
da das Objekt kopiert und dessen Inhalt in einer anderen Speicherzelle gespeichert wird.
Mein Buch sagt das ebenfalls.
Aber als ich dieses Beispiel in Xcode eingegeben habe, hab ich festgestellt, dass nach dem copy-Aufruf
der retain Count von newString = 3 ist.
Also wiederspricht sich das Ganze. Wie gesagt in meinem Buch steht der bleibt weiterhin auf 2.
Also was ist da falsch? Wie kann das sein? Das verstehe ich nicht. Kann mir da jemand weiterhelfen?
Ihr könnt das ja mal selbst ausprobieren.
LG