调用obtainPermanentIDsForObjects时出现线程错误

时间:2012-07-03 16:47:01

标签: iphone objective-c ios core-data

我正在创建一个新的NSManagedObject并将其插入到具有并发类型私有队列的上下文中(因此它在后台线程上运行)。

在我保存之前,我称之为:

[appDelegate.backgroundMOC obtainPermanentIDsForObjects:
       [NSArray arrayWithObject:newObject] error:&error];

然后我保存:

[appDelegate.backgroundMOC save:&err];

但是,我收到了EXC_BAD_ACCESS崩溃。看看堆栈跟踪,我看到了:

0 semaphore_wait_trap
7-[NSManagedObjectContentSave:]

我猜测有问题的行是semaphore_wait_trap,但我不确定是怎么造成的。

如果我注释掉obtainPermanentIDsForObjects行,则问题就会消失。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

由于获取对象ID(http://openradar.appspot.com/11478919)存在错误,您需要将所有新创建的对象传递给-[NSManagedObjectContext obtainPermanentIDsForObjects:error:]