我在iPhone上遇到Core Data项目的问题。当用户开始添加对象,然后在该过程中取消时,会出现这种情况。
如果用户点击取消并返回到对象列表,则会在其中列出虚拟对象,表示他们正在创建的对象。这永远不会保存到数据库中 - 当用户点击保存按钮时,会按预期进行保存。
当加载用户添加数据的视图控制器时,我创建了一个新的Thing对象 - 这是我要添加的核心数据实体:
myThing = [NSEntityDescription insertNewObjectForEntityForName:@“myThing”inManagedObjectContext:managedObjectContext];
我试图在我的取消方法中删除它,如下所示:
[managedObjectContext deleteObject:myThing];
当我这样做时,当我点击取消时,我得到一个EXC_BAD_ACCESS。单步执行调试器中的代码,它可以很好地通过cancel方法,但这是在根视图控制器中生成的,我在列出我的对象以及我尝试创建此对象之前的位置。
我想要实现的只是允许用户添加一个新对象,但取消部分通过。
任何想法导致此错误的原因是什么?不幸的是,我无法从中生成堆栈跟踪:(
答案 0 :(得分:2)
您取消对象的方法是典型且恰当的。
内存错误很常见,很难调试。你运行静态分析仪了吗?从上下文中删除后,您可能希望将“myThing”引用设置为nil。
您是否确定这是导致内存错误的取消工作流程?
答案 1 :(得分:0)
您还可以启用NSZombie并找出正在访问的已释放对象。这将有助于您快速跟踪此问题。 Google NSZombie提供了一些如何使用它的例子。