使用Objective-C快速枚举时,在NSManagedContext对象上执行保存操作是否安全

时间:2013-10-19 21:56:45

标签: ios objective-c core-data fast-enumeration managedobjectcontext

我想知道这种代码是否可以使用

NSManagedObjectContext *moc = [(AppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
for (NSDictionary *dict in objects) {
            Object *object = [NSEntityDescription insertNewObjectForEntityForName:@"object"
                                                     inManagedObjectContext:moc];
            // Populate model fields with appropriate dictionary keys
        }

我提出的原因是,建议您不要跨线程传递对托管对象上下文对象的引用,并想知道这是否确实发生在这里。

3 个答案:

答案 0 :(得分:3)

使用for (object in collection)进行快速枚举与线程无关。所有这些代码都在同一个线程上运行。

答案 1 :(得分:0)

如果该插入操作是线程化的,你应该考虑创建一个后台NSManagedObjectContext来处理它,这是一个过大的帖子并且在之前回答过。

performBlock:

答案 2 :(得分:0)

您正在使用一个ManagedObjectContext,代码中没有线程问题。你正在以正确的方式做到这一点。所有代码都是顺序的。 如果你想使用多个上下文,一个线程中的每个上下文,你应该处理多线程。