1

複数の写真 (アプリケーションのサンドボックスにある) をカメラ ロール (保存された写真アルバム) にインポートしようとしています。

ファイルパスからデータを読み取り、UIImageWriteToSavedPhotosAlbum を使用して操作を終了するセレクターをバックグラウンドで実行しています。現在、Instruments を使用して大きな画像をテストしていますが、メモリの大幅な増加は見られません (最大 Living バイトは約 8MB) が、20 個までの画像をインポートしようとすると、アプリがまだクラッシュします。メモリ警告が表示されますが、何が問題なのかわかりません。

また、ディスクからファイルを読み取る (および復号化する) コードの周りに @autoreleasepool を使用しています。

私のコードの別のセクションでは、ほぼ同じ手順 (データの暗号化) で ALAssetsLibrary から画像をインポートしており、200 を超える画像で完全に正常に動作します。メモリ警告もクラッシュもありません。

保存された写真ライブラリに画像を一括で書き込む方法に関するアイデアはありますか?

PS:私は基本的に私のインポート方法でこれを持っています:

UIImageWriteToSavedPhotosAlbum(decryptedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

次に、didFinishSaving コールバックで、インポートするファイルパスの配列を処理する import メソッドを再度呼び出します。

小さなファイルでは問題なく動作しますが、大きなファイルではクラッシュが発生します。

ありがとう!

編集: で大きな画像を読み込もうとしたところ[UIImage imageNamed:]、アプリがまだクラッシュします。それで、それは UIImageWriteToSavedPhotosAlbum メソッドの問題だと思いますか? 大きな画像をインポートするにはどうすればよいですか?

4

1 に答える 1

0

ALAssetsLibraryの方法を使用するwriteImageDataToSavedPhotosAlbum:metadata:completionBlock:ことになりましたが、問題なく動作します! メモリの警告やクラッシュはありません。

于 2012-09-05T08:16:42.207 に答える