=== 背景 ===
我有两个NSManagedContext,主MOC为NSPrivateQueueConcurrencyType,它在后台线程运行,上传一堆图片。上传每张图片时都会实时更新该照片的上传进度。表示上传进度的字段为progress,该字段为Transient类型,上传完成后才保存照片的状态到数据库中。
另一个MOC类型为NSMainQueueConcurrencyType,设其ParentContext为主MOC。在一个显示上传进度的界面中,使用NSFetchedResultsController做数据源,它后端MOC即为这个子MOC。在这个界面中,监听主MOC的NSManagedObjectContextDidSaveNotification和NSManagedObjectContextObjectsDidChangeNotification事件。相关的几个处理方式如下。
https://gist.github.com/3758238=== 问题 ===
在测试的touch,ip4,ipad3设备中,后台上传都没有出现问题。进入上传进度界面后,touch和ip4也都没有出现问题,但是用ipad3时基本上都会出现执行一段时间后程序崩溃或陷入死锁的问题。崩溃后主线程的堆栈如下图。
偶尔最后一条堆栈也发生在[NSDate isEqual]上,排序字段的类型是NSDate的。
死锁时的堆栈如图。
3个设备的版本都是5.1.1,touch和ipad越狱了。
搞了好久了都没有找到解决方案。看哪位高手能给点灵感~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/48363
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.