2011-12-22 57 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中,以便您可以从磁盘动态加载它们,而不是将它们全部保存在内存中。

对不起,如果它没有帮助,因为我真的不知道你的最终目标是在同一时间使用这样的图像数量。