我使用UIImageWriteToSavedPhotosAlbum()
将一些照片写入照片库,同时使用ALAssetsGroupSavedPhotos
和朋友显示此资产组(enumerateAssetsUsingBlock:
)的内容。有时,通过枚举组返回的资产会变得“无效”,这意味着defaultRepresentation
调用会返回nil
,尽管资产仍在内存中。
我注意到这似乎发生在照片库被UIImageWriteToSavedPhotosAlbum()
调用修改后。这是记录在案的行为吗?我该怎样预防呢?重新加载资产不是一个可行的选择,因为用户可能已经在使用资产的UI中更深处。
答案 0 :(得分:6)
这是一个不幸但有记录的行为。供参考:
“ALAssetsLibraryChangedNotification发送时的内容 资产库已从使用数据的应用程序下更改。 收到此通知后,您应该丢弃任何缓存 信息并再次查询资产库。你应该考虑一下 使任何ALAsset,ALAssetsGroup或ALAssetRepresentation对象无效 在完成处理通知后你正在引用。“
所以你要做的就是为ALAssetsLibraryChangedNotification
注册一个观察者。 (在iOS 5.X上有关于此通知的错误,请参阅Open Radar。)
收到通知后,您必须重新枚举所有组和资产。目前还没有别的办法。从GUI的角度来看,这是非常不幸的,我们只能希望Apple在未来改进这种机制。
干杯,
亨德里克