0

我在我的项目中使用 ELC 图像选择器。在这里,我遇到了一个问题:

当我选择像 20 选择器这样的图像时工作正常,但是当我选择像 32(选择的图像计数)这样的图像时,我的应用程序在关闭控制器本身之前崩溃并且我收到错误:

节目接收信号:“0”。数据格式化程序暂时不可用,将在“继续”后重试。(加载共享库“/Developer/usr/lib/libXcodeDebuggerSupport.dylib”时出现未知错误)

而且我得到:

收到内存警告。等级=1

注意:当这种情况发生时,首先我选择了 32 张工作正常的图像,然后我再次选择了相同数量的崩溃图像。

我也试过这个例子:github ELCImagePickerController project

谁能给我答案来解决这个问题?

4

2 回答 2

3

从错误中您可以看到这是一个内存问题

所以你有2个选择

  1. 设置可以选择的图像数量限制
  2. 在后台将图像保存到临时文件夹

或者

自定义 ELC 选择器代码,以便……当一个人选择图像时……它只需要图像路径而不是图像内容,当它们完成时……现在运行一个循环将这些图像放入您的应用程序。

于 2012-05-18T13:54:14.727 回答
0

@SteveGear 以下代码将解决您的问题。只需提供 UIImagePickerControllerReferenceURL,您将获得 NSData。它的时间很长,但仍然可以帮助其他人。

ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
NSURL *assetURL = [infoObject objectForKey:UIImagePickerControllerReferenceURL];
__block NSData *assetData;

[assetLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset) // substitute assetURL with your url
 {
     ALAssetRepresentation *rep = [asset defaultRepresentation];
     Byte *buffer = (Byte*)malloc((long)rep.size);
     NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:(NSUInteger)rep.size error:nil];
     assetData = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];//this is NSData what you need.
     //[data writeToFile:assetData atomically:YES]; //Uncomment this if you want to store the data as file.
 }
             failureBlock:^(NSError *err) {
                 NSLog(@"Error: %@",[err localizedDescription]);
 }];

这里assetData是你需要的。

于 2014-04-14T08:44:07.257 回答