nsmanageobjectcontext.save在iOS7中停止工作

问题描述:

我继承的项目是在2013年4月建立并发布的,它完美适用于ios 5.1,ios 6.0和ios 6.1。nsmanageobjectcontext.save在iOS7中停止工作

但是我刚刚安装了应用程序到一个iPhone有ios7.0,它没有工作。我查看了代码,发现应用程序从网上下载了一些JSON数据,然后当它尝试运行以下3行代码时,第二行后面的“没有任何反应”。

NSError error = nil; 
BOOL isSuccessful =[self.tempMoc save:&error]; // where tempMoc is a NSManagedObjectContext 
NSLog(@"errrrrrr ----- %@ --- errrrrrr", error); 

当我说什么都没有发生时,我的意思是代码执行停在第二行,并且该行之后没有任何代码被触发。我尝试在第二行放置一个断点,然后进入函数,但没有任何反应...... xcode之后没有向我显示任何新东西。我的模拟器中的应用程序也挂起。

我试着将我的项目的部署目标从ios6更改为ios7。再一次,这没有效果。

接下来应该做什么?

附加说明

我一直在看其他的堆栈溢出的答案,有的人说一挂[保存的NSManagedObjectContext]可能是一个线程问题。我不知道如何确认我的问题是否是线程问题。我知道只有一个地方调用了[NSManagedObjectContext保存],这是一个地方悬挂的地方。我试图把一个

[self.tempMoc.persistentStoreCoordinator lock]; 

实例self.tempMoc之后,但没有任何效果。

我想通了这个问题。

确实是多个线程操纵导致hte保存函数挂起的NSManagedObjectContext。

我的解决方案是重写代码以摆脱所有额外的线程。我只剩下主线程,这解决了这个问题。