0

プロジェクトでELCImagePickerを使用しています。ここで私は1つの問題を抱えています:

20ピッカーのような画像を選択すると正常に動作しますが、32(選択した画像の数)のような画像を選択すると、コントローラー自体を閉じる前にアプリがクラッシュし、エラーが発生します:

プログラム受信信号:「0」。データフォーマッタは一時的に利用できません。「続行」後に再試行します。(共有ライブラリ「/Developer/usr/lib/libXcodeDebuggerSupport.dylib」の読み込み中に不明なエラーが発生しました)

そしてまた私は得ています:

メモリ警告を受け取りました。レベル=1

注:この状況が発生した場合、最初に32枚の画像を選択しましたが、正常に機能し、再びクラッシュしていたのと同じ数の画像を選択しました。

また、例を試してみました:githubELCImagePickerControllerプロジェクト

誰かが私にこれを克服するための答えを与えることができますか?

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 に答える