我在处理核心数据+并发/嵌套MOC时遇到了一些麻烦(不确定我在哪一个= P上遇到问题)。我有一个方法,我传入一个托管对象ID(我检查了它是否是永久的),并且该方法具有一个子托管对象上下文,该上下文限制在特定队列中。我可以通过[managedObjectContext objectWithID:moID]从子托管对象上下文中检索对象,但是当我尝试访问其任何属性(托管对象仍然是故障)时,都会得到EXC_BAD_ACCESS,并且堆栈跟踪显示_svfk_1和。我知道没有示例代码很难找出问题所在,但我希望有人可以阐明可能的原因。谢谢。 =)编辑:我尝试使用objc_msgSend而不是汤姆·哈灵顿(Tom Harrington)建议的existingObjectWithID:error:,现在它有时可以工作,但其他时间不工作。我还遇到了objectWithID:在EXC_BAD_ACCESS上崩溃的情况。我怀疑这可能是同步问题。如果我在一个上下文中编辑某些内容并保存而在我的子上下文中编辑其他内容,这会引起问题吗?编辑2:我想出了为什么existObjectWithID:error:有时但并非总是有效。受管对象ID确实是一个临时ID(mergeChangesFromContextDidSaveNotification:不能将其转换为永久ID吗?),因此我必须在传递ID之前先调用mergeChangesFromContextDidSaveNotification:。但是有时在子上下文的obtainPermanentIDsForObjects:error:中我仍然会崩溃。可能是什么原因造成的?谢谢。编辑3:这就是我的MOC层次结构。 Persistent Store Coordinator | Persistent Store MOC / \Main Queue MOC Child MOC (confinement)我正在从主队列中调用一个方法,该方法使用子MOC(在另一个队列中)来插入和更新一些托管对象,同时,我也在持久存储MOC中插入和更新托管对象。托管对象也可以同时更新,删除和插入到主队列MOC中。我合并了从持久性存储协调器到主队列MOC和子MOC的所有更改。还有一些问题:保存MOC是否会自动合并内容?如果有针对MOC的挂起合并请求,并且您在处理该合并请求之前进行了保存,是否会引起问题?编辑4:这是我初始化子MOC的方法。dispatch_sync(_searchQueue, ^{ _searchManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSConfinementConcurrencyType]; [_searchManagedObjectContext setParentContext:_persistentStoreManagedObjectContext]; [_searchManagedObjectContext setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];});顺便说一句,我注意到当通知包含已删除的对象时,合并只会崩溃(使用mergeChangesFromContextDidSaveNotification:)。 最佳答案 您似乎仍在努力工作。对于您的子MOC,由于它位于串行队列中,请使用NSPrivateQueueConcurrencyType,并将其父项设置为您的主MOC。NSConfinementConcurrencyType用于旧配置。关于objective-c - 尝试访问托管对象属性时为EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15465389/ 10-13 02:27