ユーザーが複数の画像を選択してライブラリに保存するように依頼できるアプリケーションを作成しています。ALAssetLibrary を使用して、ギャラリー内のすべての画像のリストを作成し、ユーザーが選択できるようにします。ユーザーが保存を要求すると、 を使用して保存された写真に画像を 1 つずつ保存します[library writeImageToSavedPhotosAlbum:metadata:completionBlock:]
。そのため、最初に 1 つの画像を保存し、次に完了ブロックで別の画像を保存します。
ALAssetsLibraryChangedNotification は、保存する画像の数だけ呼び出されることを期待しています。しかし、それは 2 倍の回数呼び出されています。なぜこれが起こるのか手がかりはありますか?選択したすべての画像に対して実際に一度だけ画像を書き込んでいることを確認しました。各画像を保存した直後に通知が発生します。保存された画像ごとに一度すべての通知を受け取ったら、ライブラリをリロードしてアセットを再度ロードします。アセットのリロードが完了するたびに、通知が再び届き始めます。
最後の通知の後にのみ実際の処理を実行することを選択できるように、そのような通知がさらに来ているかどうかを知る方法はありますか?