2014-05-03 70 views
0

我有一個工作程序,但我遇到「堆內存增長」 我已經把範圍縮小到這些方法如下保存和加載UIImage的數據造成了巨大的內存問題

基本上我已經從庫中拍攝的圖像問題,導入到我的應用程序,並且正在使用的方法爲「重新加載」它的每用戶訪問頁面

我需要7張圖片做到這一點時間,所以內存管理勢在必行

 ///saves the image /// 
    if(imagepicked==2) 
    { 
    NSData *imageData = UIImagePNGRepresentation(image); 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *filename = [documentsDirectory stringByAppendingPathComponent:@"face.png"]; 

    [imageData writeToFile:filename atomically:NO]; 


///loads the image /// 
    NSString *cachedImagePath3 = [cachedFolderPath1   stringByAppendingPathComponent:@"face.png"]; 
    UIImage *image3 = [UIImage imageWithData:[NSData dataWithContentsOfFile:cachedImagePath3]]; 

    newfacebookimage.image = image3; 

它一切正常,但c auses大內存問題

我也嘗試使用NSuserdefaults也但不能得到正確的代碼。 由於

+0

此代碼,其本身不會引起問題(除非圖像的尺寸遠遠超過屏幕尺寸)。不過,我想知道爲什麼你要重新保存剛加載的圖像,因爲這看起來效率不高。我只能想象,如果你正在改變圖像,那麼我會檢查以確保例程正常。但我不知道你是否有更廣泛的內存問題,比如視圖控制器中的強參考週期?你確認當視圖控制器被解散時,它的'dealloc'方法真的叫了嗎?底線,問題的根源在於別處。 – Rob

回答

0

環繞每個負載&保存在autoreleasepools降低峯值

@autoreleasepool { 
    ... memory intensive work 
}