Objective c 此代码managedobjectcontext是否保证线程安全?

Objective c 此代码managedobjectcontext是否保证线程安全?,objective-c,core-data,nsmanagedobject,nsmanagedobjectcontext,Objective C,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,在我的系统中,每个线程都有自己的managedObject上下文 有时我想要一个特定对象的等效对象 所以我把这个分类 -(NSManagedObject *) moVersionForThisThread { NSManagedObjectID * moID = [self objectID]; NSManagedObject * mo= [[BGMDCRManagedObjectContextThreadHandler managedObjectContext]existing

在我的系统中,每个线程都有自己的managedObject上下文

有时我想要一个特定对象的等效对象

所以我把这个分类

-(NSManagedObject *) moVersionForThisThread
{
    NSManagedObjectID * moID = [self objectID];
    NSManagedObject * mo= [[BGMDCRManagedObjectContextThreadHandler managedObjectContext]existingObjectWithID:moID error:nil];
    return mo;
}
据我所知,[self-objectID]是为所有线程保存的,existObjectWithID也是线程安全的。对吗?我们总是得到正确的目标,对吗

什么都不会出错

对吧?


只是确定一下。

我相信你错过了关于ObjectID线程安全性的讨论。在单独的线程上使用objectID是完全可以接受的,但是您需要在实例化该对象的线程上从托管对象检索该objectID。换句话说,如果在对象的原始线程以外的线程上调用MoversionForHistThread,则代码[self objectID]可能会遇到线程问题

我建议将此库插入到您的项目中进行调试,如果您在不正确的线程上访问托管对象,则会发出警告:

有人能确认吗?我也怀疑。但是,它只是一个指针,objectID似乎是线程安全的。下面有人说了同样的话: