V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
acen
V2EX  ›  iDev

多个NSManagedContext下数据同步崩溃问题

  •  
  •   acen ·
    acenqiu · 2012-09-21 05:19:58 +08:00 · 3583 次点击
    这是一个创建于 4206 天前的主题,其中的信息可能已经有所发展或是发生改变。
    === 背景 ===
    我有两个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越狱了。
    搞了好久了都没有找到解决方案。看哪位高手能给点灵感~
    3 条回复    1970-01-01 08:00:00 +08:00
    zhigang1992
        1
    zhigang1992  
       2012-09-21 09:08:35 +08:00
    为啥要用parentContext呢?记得paul老头说parentContext和子context是没有自动同步的。NSFetchedResultsController是每次都得重新refetch。再两个Notification method里面价格self.fetchResultController重新刷新一下。(本人菜鸟。。。)
    zhigang1992
        2
    zhigang1992  
       2012-09-21 09:19:08 +08:00
    我错了..=_=|||
    acen
        3
    acen  
    OP
       2012-09-21 15:10:52 +08:00
    @zhigang1992 从这篇文章( http://wbyoung.tumblr.com/post/27851725562/core-data-growing-pains )看,使用子context可能会产生一些问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3251 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:43 · PVG 19:43 · LAX 04:43 · JFK 07:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.