2010-09-15 3 views
1

Par exemple, je dois ajouter un mot à une chaîne existante.Ai-je besoin de libérer NSString * temp = @ "aaa"?

NSString * temp = @"some prefix"; 
someString = [temp stringByAppendString: someString]; 

Dois-je libérer la température de l'objet?

+0

essayez de chercher la prochaine fois ... cette question exacte a déjà été soulevée. –

Répondre

1

Non, vous ne devriez pas augmenter le nombre de retenues de @ "un peu de texte". PS: En fait, toutes les constantes @ "..." ont retainCount sur MAX_INT, donc ce n'est pas grave si vous les relâchez ou non :).

+0

Tous les @ "..." sont stockés dans un pool en tant que constantes? Alors qu'est-ce qui s'est passé dans mon cas? La chaîne "un préfixe" sera mise en caisse et stockée dans la piscine? Alors comment le libérer puisqu'il n'est plus utile maintenant. – icespace

+0

@icespace: "Cela ne sert à rien maintenant" ne signifie pas que vous devriez libérer un objet. Vous ne libérez des objets que si vous les possédez, et vous ne possédez pas celui-ci. En pratique, il est stocké dans le segment de données. – Chuck

4

Vous n'avez pas appelé toutes les méthodes contenant new, alloc, retain ou copy, de sorte que vous ne possédez pas, vous ne devriez pas le libérer.