我正在開發一個使用大量圖像的應用程序,我使用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