2012-05-31 4 views
1

UIImageWriteToSavedPhotosAlbum()을 사용하여 사진 라이브러리에 사진을 몇 장 쓰고 동시에 enumerateAssetsUsingBlock: 및 친구를 사용하여이 자산 그룹 (ALAssetsGroupSavedPhotos)의 내용을 표시합니다. 때로는 그룹을 열거하여 반환 된 자산이 일종의 '유효하지 않음'이되어 자산이 여전히 메모리에 있지만 defaultRepresentation 호출이 nil을 반환합니다.카메라 롤이 변경된 후 ALAsset이 잘못 되었습니까?

사진 라이브러리가 UIImageWriteToSavedPhotosAlbum() 호출에 의해 수정 된 후에 이런 현상이 발생했다고 생각했습니다. 이것이 문서화 된 행동입니까? 어떻게 방지 할 수 있습니까? 자산을 다시로드하는 것은 가능한 옵션이 아닙니다. 사용자가 이미 자산을 다루는 UI의 어느 곳에서 더 깊숙이있을 수 있기 때문입니다.

답변

6

이것은 불행한 일이지만 문서화 된 동작입니다. 참고로 :

"이 알림을받을 때 자산 라이브러리의 내용이 데이터를 사용하는 응용 프로그램에서 변경 한 경우 보낸 ALAssetsLibraryChangedNotification , 당신은 어떤 캐시 정보를 취소하고 자산을 조회해야한다. 다시 알리미, ALAssetsGroup 또는 ALAssetRepresentation 개체 알림 처리를 마친 후 참조하는 것이 좋습니다. "

그래서 당신이해야 할 일은 ALAssetsLibraryChangedNotification에 대한 관찰자를 등록하는 것입니다. (iOS 5.X에서이 알림과 관련하여 버그가있는 경우 Open Radar을 참조하십시오.) 알림을 받으면 모든 그룹 및 자산을 다시 계산해야합니다. 현재로서는 다른 방법이 없습니다. 이것은 GUI 관점에서 볼 때 매우 불행한 일이며, 우리는 앞으로이 메커니즘을 개선하기를 희망 할뿐입니다. ALAssets이되지 않기 때문에

건배,

헨드릭

+0

불행하게도이 솔루션은 아이폰 OS 9 좋지 않다. – SpaceDog