相机胶卷更改后ALAsset无效?

时间:2012-05-31 18:11:19

标签: objective-c ios alassetslibrary alasset

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

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

1 个答案:

答案 0 :(得分:6)

这是一个不幸但有记录的行为。供参考:

  

“ALAssetsLibraryChangedNotification发送时的内容   资产库已从使用数据的应用程序下更改。   收到此通知后,您应该丢弃任何缓存   信息并再次查询资产库。你应该考虑一下   使任何ALAsset,ALAssetsGroup或ALAssetRepresentation对象无效   在完成处理通知后你正在引用。“

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

干杯,

亨德里克