Cela ne fonctionnera pas, la référence en webData2
est le même que test
et seront libérés.
webData2 = [[NSMutableData alloc]init]; // webData2 points to object A
NSMutableData* test = [[NSMutableData alloc] init]; // test points to object B
webData2 = test; // test and webData2 both points to A, nothing points to B
[test release]; // object B is released, test and webData2 points to garbage
Le problème est à la ligne 3, où vous ne disposez plus d'une référence explicite à l'objet B attribué à la ligne 1.
Vous devez sortir webData2
avant de l'affecter avec un nouveau pointeur d'objet. Comme le souligne bbum, la fuite se réfère toujours à l'endroit où l'objet est alloué, et non là où il a réellement fui.
En cas de doute, utilisez l'analyseur statique (faites toujours tourner l'analyseur statique de temps en temps). Vous le trouverez dans Xcode sous le menu Build en tant que Construire et analyser. Il y aura parmi beaucoup d'erreurs la plupart des fuites de mémoire, et les marquer avec des flèches bleues dans la marge. Élargir les flèches montrera le flux de programme complet pour la fuite de l'allocation à la dernière référence se perdre.
+1 pas pour votre question, mais pour votre poignée. Argh !! – makdad