我有一个用NSMainQueueConcurrencyType创建的moc(self.managedObjectContext)。
现在,对于以这种方式调用的方法 -
ManagedObjectType1 *obj1 = [self createAnObject];
createAnObject的实现是 -
- (ManagedObjectType1 *) createAnObject {
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
childContext.parentContext = self.managedObjectContext;
ManagedObjectType1 *obj1 = //..initialize in childContext
return obj1
}
方法返回后(在调用它的地方),obj1为nil,但obj1在返回时在方法实现中有数据。
这里可能出现什么问题。我尝试使用NSPrivateQueueConcurrencyType分配childContext,但这也没有帮助。
答案 0 :(得分:0)
这很有用。但这是一个很好的方法。
- (ManagedObjectType1 *) createAnObject {
__block ManagedObjectType1 *obj1;
[self.managedObjectContext performBlockAndWait:^{
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
childContext.parentContext = self.managedObjectContext;
obj1 = //..initialize in childContext
}];
return obj1
}