Я не нашел утечек на моем UIImage - PullRequest
1 голос
/ 04 мая 2011

Я думаю, что у меня есть некоторые утечки из-за моего UIImage.На самом деле, загружается много изображений, и я думаю, что когда я загружаю новое изображение, оно отображается сверху, старшее и старшее не освобождаются или не освобождаются ...

// Create and posit the UIImage
image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
NSLog(@"retain count 1 : %i", [imageView retainCount]);
imageView = [[UIImageView alloc] initWithImage:image];
NSLog(@"retain count 2 : %i", [imageView retainCount]);
//[imageView setImage:image];
//[imageView initWithImage:image];
imageView.frame = CGRectMake(0,64,320,367);
NSLog(@"retain count 3 : %i", [imageView retainCount]);
[self.view addSubview:imageView];
NSLog(@"retain count 4 : %i", [imageView retainCount]);
[imageView release];
NSLog(@"retain count 5 : %i", [imageView retainCount]);
NSLog(@"-----------------------");

Этот коддай мне этот результат:

retain count 1 : 0
retain count 2 : 0
retain count 3 : 1
retain count 4 : 1
retain count 5 : 2
retain count 6 : 1
-----------------------
retain count 1 : 0
retain count 2 : 0
retain count 3 : 1
retain count 4 : 1
retain count 5 : 2
retain count 6 : 1
-----------------------
retain count 1 : 0
retain count 2 : 0
retain count 3 : 1
retain count 4 : 1
retain count 5 : 2
retain count 6 : 1
-----------------------

Видимо, изображение было выпущено и есть только 1, но старшее все еще на экране телефона .. по-видимому ...

Если есть ещекартинки на экране, как я могу выпустить старые картинки ???

Спасибо, что прочитали мои вопросы !!!

Ответы [ 3 ]

0 голосов
/ 04 мая 2011

Вы alloc imageView и не выпускаете его.

Так что отпустите его после добавления для просмотра.

[imageView release];
0 голосов
/ 04 мая 2011

вместо того, чтобы создавать новый imageView каждый раз, когда ваше соединение завершается, вы должны просто установить свойство image для imageView

0 голосов
/ 04 мая 2011
image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0,64,320,367);
[self.view addSubview:imageView];
[imageView release];
}

Вы должны release выделенные imageView

...