Я создал пример приложения, в котором в качестве фона установлен базовый полноэкранный UIImageView. Это приложение очень простое. Все это 2 страницы. (Я выложу код ниже). NIB только как UIImageView. Я пробовал 2 разных сценария -
Есть ли проблема с выпуском файлов и изображений NIB.
У меня были некоторые утечки памяти.
1) Пример 1 (ПЛОХО) - я загружаю изображение прямо в NIB. Когда я нажимаю на вид, память увеличивается на 5 МБ. Когда я высовываю (используя NavigationController) вид сверху, память только уменьшается на 1,5 МБ. Dealloc действительно называется. У меня нет IBOutlets. Так что для меня это либо кэширование, либо сохранение этого изображения в памяти где-то.
2) Пример 2 (ХОРОШО) - Установите IBOutlet для представления UIImage, и я помещаю изображение в UIImageview, как показано ниже (я знаю, что могу создать UIImageView программно, но я проверяю память здесь, а не мои навыки создания экрана ). Это хорошо очищает после себя. Это удаляет изображение из памяти, и я вижу в инструментах, что память уменьшается.
@interface Page3VC : UIViewController {
UIImageView*backimage;
}
@property(retain, nonatomic) IBOutlet UIImageView*backimage;
end
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
backimage.image = [self getImage:@"hipHome.png"];
}
-(void)viewDidDisappear:(BOOL)animated {
backimage.image = nil;
[super viewDidDisappear:animated];
}
-(UIImage*)getImage:(NSString*)imageName{
//return [UIImage imageNamed:imageName];
return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:nil]];
}