2011-04-19 38 views
0

實際上,我第一次使用了stackoverflow來搜索我的問題的解決方案。從UIImagePickerController加載圖像時,內存字節數增加

問題是我使用的表格視圖中,每個單元格中都有一個ImageView以顯示選定的圖像和一個打開圖像選取器控制器並允許用戶從圖庫或相機中選取圖像的按鈕。從圖庫中選擇圖片後,我使用的功能

NSData *imageData=UIImageJPEGRepresentation(image2, .4); 

將其轉換成數據,以減少圖像的內存大小,然後將其保存在文件目錄,最後重新裝載表。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png",currentCameraRow]]; 


    if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) 
    { 
     NSLog(@"file is exiting and starting"); 
     if ([[NSFileManager defaultManager] removeItemAtPath:imagePath error:nil]) { 
      NSLog(@"file is exiting and deleting"); 

     } 

    } 

否則我在保存文檔目錄的圖像,並重新加載UITable。

重新加載表格後,圖像應出現在單元格的ImageView中。

現在的問題是,如果我再次選擇相同的單元格的圖像,並在點擊相機按鈕後加載它,圖像將出現,但內存也將增加.15MB,我檢查了儀器這使得我的應用程序崩潰在iPhone 3上。

我實際上在想的是,如果我爲同一個單元格選擇圖像,而不考慮我做它的次數,應該在文檔目錄中覆蓋圖像並且在檢入儀器時內存大小不應該增加,但這種情況不會發生。

我對這個問題非常沮喪,所以請任何人幫忙。您的幫助將受到高度讚賞。

回答

0

如果你的內存佔用量的增長,你最有可能泄露一些對象,即不釋放他們正確。您可以檢查儀器和靜態分析儀。

請注意,壓縮圖像將而不是減少加載時將消耗的內存。這只是pixels_width * pixels_height * 4個字節。

0

即使你壓縮圖片,所以它不會在文件中使用磁盤上的存儲空間,當你加載它在你的應用程序變得無壓縮而且會佔用大量的內存取決於應用決議。

-1

嘗試檢查使用儀器殭屍。有可能導致內存增加的泄漏。還一次又一次地選擇圖像時使用高速緩存可爲您節約一些空間。以釋放使用的內存並不需要他們儘快釋放對象。