2012-08-02 96 views
3

我正在編寫一個應用程序,用戶可以選擇多個圖像並要求它們保存到庫中。我使用ALAssetLibrary創建畫廊中所有圖像的列表供用戶選擇。當用戶要求保存時,我使用[library writeImageToSavedPhotosAlbum:metadata:completionBlock:]一次保存一個圖像以保存照片。所以我先保存一張圖片,然後保存在完成塊中,保存另一張圖片等等。多次觸發ALAssetLibraryChangedNotification

我期望ALAssetsLibraryChangedNotification被調用的次數與要保存的圖像數量一樣多。但它被多次調用兩次。任何線索爲什麼會發生這種情況?我已經檢查過,我實際上是爲每個選定的圖像只寫一次圖像。在保存每個圖像後,通知立即生效。一旦我爲每個保存的圖像收到一次所有通知,我重新加載庫並重新加載資源。每次我重新加載資產時,通知會再次開始。

有沒有一種方法可以讓我知道是否有更多這樣的通知出現,以便我可以選擇僅在最後一次之後執行實際處理?

+0

嘿,只是面臨同樣的問題,找到了解決辦法? – shem 2012-08-15 10:42:44

+0

任何人找到任何解決方案? – 2016-07-05 07:09:33

回答

0

我發現通過這個最好的解決方案是在執行保存操作之前刪除觀察者。

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

然後在保存所有內容後再次訂閱通知。

0

額外的通知可能是由於照片流更新,如果你有它的話。