2009-04-17 8 views
0

Ich verwende derzeit eine Instanzvariable, die ein NSMutableString in einer Klasse ist, die ein Delegat für NSURLConnection ist. Die Variable ist verantwortlich für eine Reihe von Gebäudedaten, die von der Delegatmethode zurückgegeben:Ist diese Verwendung von NSMutableString ein Speicherverlust?

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 

Der String, ‚foo‘, eine Eigenschaft, mit behalten auf sie gesetzt hat. Es ist in meinen Klassen init-Methode sehr einfach auf diese Weise alloc'd:

dataString = [[NSMutableString alloc] init]; 

Es wird in den Klassen dealloc Methode freigegeben.

In Verbindung: didReceiveData :, Ich benutze das var wie folgt aus:

NSString *tmpString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    [dataString appendString:tmpString]; 
    [tmpString release]; 

Nun ist dies, wo die Dinge schwierig werden. Da die Klasse, in der ich den NSURLConnection-Delegaten festlegte, ein Singleton ist (hauptsächlich Aufrufe vom Typ NSURL *), muss ich sorgfältig darauf achten, wie ich meine Objekte wiederverwende. Deshalb, in meiner connectionDidFinishLoading: Klasse habe ich folgende:

// cache away data currently in dataString. 
[dataString release]; 
dataString = [[NSMutableString alloc] init]; 

Ist diese Strategie meiner Datenzeichen des Umgangs mit Ihren Augen bluten? Lecke ich Speicher? Was kann ich tun, das ist schlauer?

Antwort

Verwandte Themen