2011-12-22 88 views
0

我使用ELCImagePickerController,所以我可以選擇多張照片並導入它們。當我選擇幾張照片時它工作正常,但如果我選擇了大約25張,我會發生崩潰。下面是運行我打做選擇照片後的代碼:UIImagePicker選擇後崩潰

-(void)selectedAssets:(NSArray*)_assets { 
    NSMutableArray *returnArray = [[NSMutableArray alloc] init]; 
    int count=0; 
    for(ALAsset *asset in _assets) { 
     NSMutableDictionary *workingDictionary = [[NSMutableDictionary alloc] init]; 
     [workingDictionary setObject:[asset valueForProperty:ALAssetPropertyType] forKey:@"UIImagePickerControllerMediaType"]; 

     UIImage *image=[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]; 
     [workingDictionary setObject:image forKey:@"UIImagePickerControllerOriginalImage"]; 
     [workingDictionary setObject:[[asset valueForProperty:ALAssetPropertyURLs] valueForKey:[[[asset valueForProperty:ALAssetPropertyURLs] allKeys] objectAtIndex:0]] forKey:@"UIImagePickerControllerReferenceURL"]; 

     NSLog(@"%i", count); 
     count++; 

     [returnArray addObject:workingDictionary]; 
    } 
    [self popToRootViewControllerAnimated:NO]; 
    [[self parentViewController] dismissModalViewControllerAnimated:YES]; 

    if([delegate respondsToSelector:@selector(elcImagePickerController:didFinishPickingMediaWithInfo:)]) { 
     [delegate performSelector:@selector(elcImagePickerController:didFinishPickingMediaWithInfo:) withObject:self withObject:[NSArray arrayWithArray:returnArray]]; 
    } 
} 

我選擇了80張照片,並聲明的NSLog顯示多達45,但隨後只是沒有消息死機,只是(gdb)

我選擇的圖像是用後置攝像頭拍攝的iPhone 4圖像。我試圖在導入時調整圖像大小,但即使如此,應用程序仍然崩潰。任何想法可能是什麼問題?

+0

你可能會使用太多的RAM。您是否使用Activity Monitor工具分析了這部分代碼? – Eugene 2011-12-22 21:44:00

+0

我現在在儀器中使用了泄漏模板,總分配從未超過3.76 MB。或者我應該使用不同的模板? – Snowman 2011-12-22 21:51:46

+0

幾乎不可置信的是,在選擇80張圖片並將它們加載到RAM中後,它的使用情況就會像〜4mb。嘗試使用Activity Monitor儀器,它會顯示真實的內存使用情況統計信息。 – Eugene 2011-12-22 21:53:37

回答

2

如果您不介意,我會將其作爲答案。

這個問題很少有解決辦法。首先,您可能希望限制用戶選擇比5張照片更多的東西。其次,您可能需要調整圖像大小,並在將它們放入數組或其他東西之前使它們變得非常小。或者,如果您需要全部使用原始大小,則可以在選擇時將它們複製到〜/ tmp目錄,並將鏈接存儲到您的NSArray中,以便您可以從磁盤動態加載它們,而不是將它們全部保存在內存中。

對不起,如果它沒有幫助,因爲我真的不知道你的最終目標是在同一時間使用這樣的圖像數量。