我正在开发一个使用大量图像的应用程序,我使用UIWebView
来代表使用JavaScript代码的约200个图像(我正在使用UIZE库),问题是当我与UIWebView
做,我用下面的代码viewWillDisappear
从内存中释放UIWebView内容,强制应用程序释放内存
-(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 MB),我加载约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
任何帮助将不胜感激。
Thx提前。
伟大的答案,好的工作伙计,thx很多,我有一个问题给你,我如何创建一个图像的瓷砖? – Scar 2012-02-23 08:27:02
我发现了一个名为ImageMagick的应用程序,另一个名为Image Cutter的应用程序,如果您知道另一个可以帮助我的软件,我将非常感谢您的帮助,感谢您的回答。 – Scar 2012-02-23 09:18:43
停止! :D您不需要创建切片。 CATiledLayer正在为您做所有事情。你只需要实现它。它有一种渲染图像的方法,它总是呈现图像的一部分,这就是魔法所在。告诉我,如果你不明白这一点。 – 2012-02-23 09:50:07