ios - 在后台线程中使用 ALAssetsLibrary 时,有人遇到过崩溃吗?

标签 ios ios6 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 次之前这种情况永远不会发生,我在想可能是这些 block 在完成时没有从 apple 数据结构中正确删除?提前感谢任何线索。

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

最佳答案

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

assetsLibrary = [[ALAssetsLibrary 分配] 初始化];

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

关于ios - 在后台线程中使用 ALAssetsLibrary 时,有人遇到过崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480611/

相关文章:

objective-c - 有没有使用 ALAssetsLibrary 快速检查用户访问权限的方法?

ios - 我如何让用户输入密码以注销。解析/swift

ios - 如何从这种形式的xml中获取坐标 "lat,long"

objective-c - allowableMovement 似乎被忽略了

iphone - IO6 不调用 -(BOOL)shouldAutorotate

ios - Objective-C - ALAsset 和 XmlWriter 出现 EXC_BAD_ACCESS 错误

objective-c - 将 NSString 中的文件名转换为 UIImage 以获取存储在 Assets 库中的照片

iphone - 如何在 iPad 应用程序中显示 GridView 等数据

ios - 如何使用flutter,wordpress在我的应用程序中添加拉动刷新?

android - iOS 和 Android 中的批量数据存储(10GB 以上)