Я разрабатываю приложение, которое использует много изображений, я использую UIWebView
для представления около 200 изображений с использованием кода JavaScript (я использую библиотеку UIZE ), проблема в том, когда я закончу с UIWebView
, я использую следующий код в viewWillDisappear
-(void)viewWillDisappear:(BOOL)animated {
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[webViews stringByEvaluatingJavaScriptFromString:@"document.open();document.close();"];
}
с
- (void)viewDidUnload
{
webViews = nil;
}
- (void)dealloc {
[webViews release];
}
Но зарезервированная память, извлеченная из UIWebView, все еще находится в памяти, поэтому мой первый вопрос: как заставить приложение освободить память, извлеченную из UIWebView
?
Та же проблема возникает с UIImageView
, я использую большое изображение (около 3072 * 2024), которое будет извлекать (3072 *2024* 3 = 18 МБ) из памяти, я загружаю около 8 изображений, как что зарезервированная память огромна, и когда я пытаюсь освободить их, происходит то же самое, зарезервированная память, взятая из каждого изображения, остается в памяти (я всегда получаю предупреждение, которое говорит Low Memory warning
). Мне удалось загрузить около 2 изображений такого размера, чтобы уменьшить зарезервированную память, но память не освобождает память до тех пор, пока не появится предупреждение о нехватке памяти. Итак, как я могу уменьшить и справиться с огромным количеством изображений и освободите зарезервированную память в экземпляре!?
Примечание:
Я использовал взломанную версию для [UIImage imageNamed:];
метода следующим образом:
@implementation UIImage(imageNamed_Hack)
+ (UIImage *)imageNamed:(NSString *)name {
return [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], name ] ];
}
@end
Любая помощь будет оценена.
Спасибо заранее.