Я разрабатываю приложение, которое использует много изображений, я использую 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
Любая помощь будет оценена.
Спасибо заранее.
- (UIImage *)tileForScale:(float)scale row:(int)row col:(int)col size:(CGSize)tileSize image:(UIImage *)inImage
23.02.2012