iPhone: память, используемая изображениями, не освобождается - PullRequest
0 голосов
/ 05 ноября 2010

У меня есть этот код ниже, который загружает изображения из Интернета.Эти изображения отображаются после нажатия на ячейку таблицы и перезагружаются при каждом щелчке по ячейке таблицы.Дело в том, что при анализе распределения памяти с помощью «Инструментов», когда я возвращаюсь из подробного представления к таблице, память, занятая изображениями, не освобождается. Я, конечно, делаю все релизы по делу ... но, похоже, это не помогает.

    NSError *error = nil;
    UIImage *img = nil;
    NSString *myurl = [IMG_SERVER_URL stringByAppendingString: tmp_link.url];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    NSData *imageData = nil;
    if(myurl!=nil){
        imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:myurl] options:nil error:&error];
        if (error == 0) {
            img = [[UIImage alloc] initWithData:imageData];
        }
    }
    [imageData release]; imageData = nil;
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(targetWidth*i, 0, targetWidth, targetHeight)]; 
    imageView.image = img; 
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    [img release];
    [....some code....]
    [imageView release];

1 Ответ

2 голосов
/ 05 ноября 2010

Я думаю, "imageView.image = img" увеличивает количество ссылок на объект изображения. Если я прав, выделенная память не будет освобождена, пока вы не отпустите imageView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...