1

我使用和朋友将一些照片写入照片库UIImageWriteToSavedPhotosAlbum(),同时显示该资产组(ALAssetsGroupSavedPhotos)的内容enumerateAssetsUsingBlock:。有时通过枚举组返回的资产变得有点“无效”,这意味着defaultRepresentation调用返回nil,尽管资产仍在内存中。

我注意到这似乎发生在照片库被UIImageWriteToSavedPhotosAlbum()调用修改之后。这是记录在案的行为吗?我该如何预防?重新加载资产不是一个可行的选择,因为用户可能已经在 UI 的某个更深处使用资产。

4

1 回答 1

6

这是一个不幸的,但记录在案的行为。以供参考:

“ALAssetsLibraryChangedNotification 当资产库的内容从正在使用数据的应用程序下发生更改时发送。当您收到此通知时,应丢弃所有缓存信息并再次查询资产库。您应认为任何 ALAsset、ALAssetsGroup、或您在完成通知处理后引用的 ALAssetRepresentation 对象。”

所以你要做的就是注册一个观察者ALAssetsLibraryChangedNotification。(关于 iOS 5.X 上的此通知有一个错误,请参阅Open Radar。)当您收到通知时,您必须重新枚举所有组和资产。目前没有其他办法。从 GUI 的角度来看,这是非常不幸的,我们只能希望 Apple 在未来改进这种机制。

干杯,

亨德里克

于 2012-06-01T12:37:20.193 回答