Предупреждение памяти и сбой из-за UIImageView с раскадровкой
У меня есть приложение каталога на IOS 6. Так что есть некоторые UIImageView в каждом представлении.
Я думаю, когда я перехожу к другим представлениям, старые изображения не публикуются. Итак, мой настоящий мем. становится 300 МБ и виртуальной памяти. становится 500 МБ, и я получаю предупреждение памяти.
Я использовал, чтобы использовать
- (void)viewDidUnload
{
[super viewDidUnload];
itemImageView = nil;
scrollView = nil;
}
Что мне делать больше? Я что-то упускаю обычное?
Обновить:
Я инициализирую ImageView так:
__block UIImageView *imageview = [[UIImageView alloc] init];
и установите его через AFNetworking:
AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:imageRequest
imageProcessingBlock:nil
cacheName:@"nscache"
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){
imageview.image = image;
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){ NSLog([error description]); }
];
Обновить:
Я использую раскадровку. Так что с одного взгляда на другой я использую Segue. Если я вернусь к первому контроллеру, viewDidUnload для второго контроллера не вызывается. Если я снова перейду ко второму виду, память увеличится, что означает, что все виды изображений во втором виде снова загружаются. Где я не прав?
Обновление 2: я начинаю верить, что речь идет о Storyboard и Push Segue. Чтобы вернуться к первому виду, я использую push segue. Я создаю другой пользовательский переход, который выскакивает второй viewcontroller.
1 ответ
Если вы используете инструменты для мониторинга использования памяти, убедитесь, что зомби выключены (варианты схемы). По умолчанию зомби не удаляются, поэтому использование вашей памяти взрывается.