3

ユーザーが複数の画像を選択してライブラリに保存するように依頼できるアプリケーションを作成しています。ALAssetLibrary を使用して、ギャラリー内のすべての画像のリストを作成し、ユーザーが選択できるようにします。ユーザーが保存を要求すると、 を使用して保存された写真に画像を 1 つずつ保存します[library writeImageToSavedPhotosAlbum:metadata:completionBlock:]。そのため、最初に 1 つの画像を保存し、次に完了ブロックで別の画像を保存します。

ALAssetsLibraryChangedNotification は、保存する画像の数だけ呼び出されることを期待しています。しかし、それは 2 倍の回数呼び出されています。なぜこれが起こるのか手がかりはありますか?選択したすべての画像に対して実際に一度だけ画像を書き込んでいることを確認しました。各画像を保存した直後に通知が発生します。保存された画像ごとに一度すべての通知を受け取ったら、ライブラリをリロードしてアセットを再度ロードします。アセットのリロードが完了するたびに、通知が再び届き始めます。

最後の通知の後にのみ実際の処理を実行することを選択できるように、そのような通知がさらに来ているかどうかを知る方法はありますか?

4

2 に答える 2

0

これを実行するために私が見つけた最善の解決策は、保存操作を実行する前にオブザーバーを削除することでした。

[[NSNotificationCenter defaultCenter] removeObserver:self name:ALAssetsLibraryChangedNotification object:nil];

すべてが保存されたら、通知を再度購読します。

于 2012-11-18T21:42:27.663 に答える
0

追加の通知は、オンになっている場合、フォト ストリームの更新によるものである可能性があります。

于 2012-08-17T20:50:22.927 に答える