2011-07-27 17 views
0

为什么说每次我打电话save我的NSManagedObjectContext:节约的NSManagedObjectContext导致应用程序无限等待

​​

的应用程序似乎永远等待,永不回来,恢复它的执行?这是我的意思是在video。这可能是因为实体/关系模型有什么问题而导致的?

这里的泄漏仪器的截图,我没有看到任何泄漏,但似乎该应用程序被分配的东西建立起来:

enter image description here

+0

仪器可以帮助您,在仪器下运行应用程序,看看发生了什么。 – ImHuntingWabbits

+0

[线程和核心数据在ipad应用程序上的mmap错误]的可能重复(http://stackoverflow.com/questions/6853183/mmap-error-on-ipad-app-with-threading-and-core-data) –

回答

-1

您是否尝试过抛弃你的多线程代码来查看它是否工作?我的猜测是你在这里混合线程并从不同线程访问/保存MOC。手动管理线程是PITA,您应该尝试切换到Grand Central Dispatch

我也给你的主要MOC自己的访问,所以你可以确保它不会从后台线程调用,并有一些:- (NSManagedObjectContext*)newBackgroundMOC;- (void)saveBackgroundMOC:(NSManagedObjectContext*)context;方法来快速创建和后台队列/线程保存MOCS:

dispatch_async(my_queue, ^{ 
    NSManagedObjectContext *context = [self newBackgroundMOC]; // create context, setup didSave notification to merge with main MOC, etc 

    // modify context 

    [self saveBackgroundMOC:context]; // main MOC gets updated 
}); 

迁移到GCD是一项工作,但从长远来看,您会发现与它合作会更愉快。不言而喻,它也是苹果公司处理线程的最现代和推荐的方式。

+0

用仪器泄漏分析器的屏幕截图编辑我的问题 – aherlambang

相关问题