ios – 在后台线程中使用ALAssetsLibrary时是否有人遇到过崩溃?

前端之家收集整理的这篇文章主要介绍了ios – 在后台线程中使用ALAssetsLibrary时是否有人遇到过崩溃?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ios应用程序,它没有以这种方式在ios 5上崩溃,现在在4或5 bg / fg周期后在启动时ios 6上始终崩溃.我已经将问题追溯到我对ALAssetsLibrary enumerateGroupsWithTypes的调用(应用程序在启动时同步到底层照片库).对enumerateGroupsWithTypes的调用是在通过调度队列调用后台线程中进行的,这样即使用户在完成之前将应用程序发送到bg,同步代码也可以完成.我收到的崩溃消息总是一样的:

* __addContextToList_block_invoke_0()中的断言失败,/ SourceCache / PhotoLibraryServices / MobileSlideShow-1647.5 / Sources / PLManagedObjectContext.m:1305

*由于未捕获的异常’NSInternalInconsistencyException’而终止应用程序,原因:’太多的上下文. contextList中没有空格.’

谷歌搜索这些错误消息并没有产生任何结果.由于直到应用程序开启/关闭至少5次才会发生这种情况,我认为这些块在完成时可能无法从苹果数据结构中正确删除?提前感谢任何线索.

更新:
经过更多调查后,这似乎与同步ALAssetsGroupLibrary有关.当我只同步ALAssetsGroupSavedPhotos或ALAssetsGroupLibrary中有0张照片时,不会发生崩溃.如果我仅同步ALAssetsGroupLibrary并且其中至少有一张照片,则会发生这种情况.

解决方法

事实证明,这与为每个同步重新分配ALAssetsLibrary有关.
通过添加成员变量,崩溃似乎已经消失.

assetsLibrary = [[ALAssetsLibrary alloc] init];

虽然这对我的代码来说显然是一种更有效/更好的设计,但我会说我遇到的问题表明ALAssetsLibrary和线程存在一些ARC问题.确保只分配一次!

猜你在找的iOS相关文章