2009-04-17 9 views
0

J'utilise actuellement une variable d'instance qui est un NSMutableString dans une classe qui est un délégué pour NSURLConnection. La variable est responsable de la construction d'une chaîne de données qui est retournée par la méthode délégué:Cette utilisation de NSMutableString est-elle une fuite de mémoire?

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

La chaîne, « foo », a une propriété définie avec retain. Il est alloc'd dans mes cours méthode d'initialisation en avant très simple de cette façon:

dataString = [[NSMutableString alloc] init]; 

Il est libéré dans la méthode des classes dealloc.

Dans le cadre: didReceiveData :, j'utiliser le var comme ceci:

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

Maintenant, c'est là que les choses se compliquent. Étant donné que la classe dans laquelle je place le délégué NSURLConnection est un singleton (il traite principalement les appels de type NSURL *), je dois me familiariser avec la façon dont je réutilise mes objets. À cet effet, dans mon connectionDidFinishLoading: classe I donne les résultats suivants:

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

Est-ce que la stratégie de manipulation de mon datastring faire vos yeux saignent? Suis-je une fuite de mémoire? Que puis-je faire de plus intelligent?

Répondre