Kümmelkorn
Aktives Mitglied
Thread Starter
- Dabei seit
- 06.10.2008
- Beiträge
- 1.941
- Reaktionspunkte
- 127
Hallo,
ich versuch gerade, mich in Objetive C & Cocoa einzuarbeiten und stoße dabei beim Speichermanagment auf Verständnisprobleme.. Liegt wohl daran, dass ich bisher wenn überhaupt hauptsächlich mit PHP „programmiert“ habe und mich daher noch nie mit Speichermanagment beschäftigt habe.
In dem Wikibook, dass ich verwende, wird eine Klasse geschrieben (für ein CustomView - sie malt nur Text auf das CustomView, nichts schwieriges). Dabei gibt es eine Methode setText, um den Text festzulegen, der ins CustomView gemalt werden soll:
_text ist eine Variable der Klasse, sollte ja recht klar sein.
Worüber ich mir gerade den Kopf zerbreche, ist folgendes:
Danke im vorraus
Gruß, Micha
ich versuch gerade, mich in Objetive C & Cocoa einzuarbeiten und stoße dabei beim Speichermanagment auf Verständnisprobleme.. Liegt wohl daran, dass ich bisher wenn überhaupt hauptsächlich mit PHP „programmiert“ habe und mich daher noch nie mit Speichermanagment beschäftigt habe.
In dem Wikibook, dass ich verwende, wird eine Klasse geschrieben (für ein CustomView - sie malt nur Text auf das CustomView, nichts schwieriges). Dabei gibt es eine Methode setText, um den Text festzulegen, der ins CustomView gemalt werden soll:
Code:
- (void) setText:(NSString*) text withSize:(int) size
{
[text retain];
[_text release];
_text = text;
_size = size;
[self setNeedsDisplay:YES];
}
_text ist eine Variable der Klasse, sollte ja recht klar sein.
Worüber ich mir gerade den Kopf zerbreche, ist folgendes:
- _text soll released werden, damit es leer ist und im nächsten Schritt überschrieben werden kann - warum muss man etwas, was sowieso überschrieben wird erst noch leer machen? Ist das nur für den Fall, dass der Wert zum Überschreiben (text) weniger Bits hat als der zu überschreibenden Wert (_text)?
- „retain before release“ leuchtet ja noch ein mit der Erklärung, die ich gelesen habe, aber wenn ich text nun retained habe, warum muss ich es am Ende der Funktion nicht releasen? Mache ich durch retain nicht aus dem text so eine Art globales Zeugs, was auch nach Ende der Funktion noch existiert?
Danke im vorraus
Gruß, Micha