Это не будет работать, ссылка в webData2
совпадает с test
и будет освобождена.
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
Итак, проблема в строке 3, где у вас больше нет явной ссылки на объект B, размещенный в строке 1.
Вам нужно освободить webData2
, прежде чем присваивать ему новый указатель объекта.
Как указывает bbum, утечка всегда относится к тому, где расположен объект, а не к тому, где он фактически произошел.1024 *
В случае сомнений используйте статический анализатор (фактически всегда запускайте статический анализатор время от времени).Вы найдете его в Xcode в меню Build как Build and Analyze .Среди множества ошибок он найдет большинство утечек памяти и отметит их синими стрелками на полях.Расширение стрелок покажет весь поток программы для утечки от распределения к последней потерянной ссылке.