Iphone UIImagePicker在选择后崩溃
我正在使用,以便可以选择多张照片并导入它们。当我选择几张照片时效果很好,但如果我选择25张左右,我会崩溃。以下是我点击“完成选择照片”后运行的代码:Iphone UIImagePicker在选择后崩溃,iphone,objective-c,uiimagepickercontroller,Iphone,Objective C,Uiimagepickercontroller,我正在使用,以便可以选择多张照片并导入它们。当我选择几张照片时效果很好,但如果我选择25张左右,我会崩溃。以下是我点击“完成选择照片”后运行的代码: -(void)selectedAssets:(NSArray*)_assets { NSMutableArray *returnArray = [[NSMutableArray alloc] init]; int count=0; for(ALAsset *asset in _assets) { NSMuta
-(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)
我选择的图像是用后置摄像头拍摄的iPhone4图像。我也尝试过在导入时调整图像的大小,但即使如此,应用程序仍然崩溃。你知道问题出在哪里吗?如果你不介意的话,我会把它作为一个答案 这个问题几乎没有解决办法。首先,您可能希望限制用户选择多于5张照片。第二,在将图像放入数组或其他东西之前,您可能需要调整图像的大小并使其非常小。或者,如果您需要它们全部保持原始大小,您可以在选择后将它们复制到~/tmp目录,并将指向它们的链接存储在NSArray中,这样您就可以从磁盘动态加载它们,而不是将它们全部保存在内存中
抱歉,如果它没有帮助,因为我真的不知道你的最终目标,在使用这么多的图像在同一时间 如果你不介意的话,我会把它作为一个答案 这个问题几乎没有解决办法。首先,您可能希望限制用户选择多于5张照片。第二,在将图像放入数组或其他东西之前,您可能需要调整图像的大小并使其非常小。或者,如果您需要它们全部保持原始大小,您可以在选择后将它们复制到~/tmp目录,并将指向它们的链接存储在NSArray中,这样您就可以从磁盘动态加载它们,而不是将它们全部保存在内存中
抱歉,如果它没有帮助,因为我真的不知道你的最终目标,在使用这么多的图像在同一时间 您可能使用了太多的内存。您是否使用活动监视工具分析了这部分代码?我现在在Instruments中使用了leaks模板,总分配从未超过3.76MB。或者我应该使用一个不同的模板?很难相信,在选择80个图像并将它们加载到RAM中时,它的使用量大约为4mb。尝试使用活动监视器工具,它显示实际内存使用统计信息。好的,我使用了活动监视器。如果我正确使用它,那么在导入时,我的应用程序的RealMem将增加100 MB以上。我猜这不好。我能怎么办?你可能用太多的内存了。您是否使用活动监视工具分析了这部分代码?我现在在Instruments中使用了leaks模板,总分配从未超过3.76MB。或者我应该使用一个不同的模板?很难相信,在选择80个图像并将它们加载到RAM中时,它的使用量大约为4mb。尝试使用活动监视器工具,它显示实际内存使用统计信息。好的,我使用了活动监视器。如果我正确使用它,那么在导入时,我的应用程序的RealMem将增加100 MB以上。我猜这不好。我能做些什么?