UIImage image с утечкой памяти данных - PullRequest
0 голосов
/ 21 июня 2011

Используя ASIHTTP, приведенный ниже код находится в классе ImageDownloader. Я получаю утечку памяти, которая добавляется внизу, но я не знаю почему. Я думал, что tempImage будет автоматически выпущен без моего участия?

- (void)requestFinished:(ASIHTTPRequest *)request
{
    UIImage *tempImage = [UIImage imageWithData:[request responseData]];

    if (tempImage.size.width > 250.0f && tempImage.size.height > 180.0f)
    {
        self.image = tempImage;
        self.circleImage = [UIImage imageNamed:@"hover.png"];

        if ([self.delegate respondsToSelector:@selector(addImageToModel:)])
            [self.delegate addImageToModel:self];
    }
    else 
    {
         if ([self.delegate respondsToSelector:@selector(badImage)])
            [self.delegate badImage];
    }

    tempImage = nil;
}

Stack trace from Instruments

Ответы [ 3 ]

1 голос
/ 21 июня 2011

self.image получает значение tempImage, поэтому оно, вероятно, сохраняет изображение.Это выпущено где-нибудь?

0 голосов
/ 21 июня 2011

Как упомянул Томас, это может быть самоизображение, сохраняющее образ?

Рассматривали ли вы пробуждение зомби?;)

http://www.mikeash.com/pyblog/friday-qa-2011-05-20-the-inner-life-of-zombies.html

http://www.cocoadev.com/index.pl?NSZombieEnabled

0 голосов
/ 21 июня 2011

Вы не должны писать эту строку:

tempImage = nil;

Поскольку tempImage - это переменная области действия функции, она сама позаботится о ней. Более того, если self.image является (неатомным, присваивается), это может быть источником вашей утечки.

Об изображении трассировки стека, это от утечек или памяти?

К сожалению, пока вы не отдадите еще немного кода, мы больше не сможем вам помочь.

...