Iphone 在具有相同父级的两个上下文中调用executeFetchRequest

Iphone 在具有相同父级的两个上下文中调用executeFetchRequest,iphone,core-data,concurrency,Iphone,Core Data,Concurrency,您好,我已经声明了两个具有相同(NSMainQueueConcurrencyType)父级的私有上下文,其中一个在这里: - (NSManagedObjectContext *)childObjectContext{ if (_childObjectContext != nil) { return _childObjectContext; } _childObjectContext=[[NSManagedObjectContext alloc] initWithConcurrency

您好,我已经声明了两个具有相同(NSMainQueueConcurrencyType)父级的私有上下文,其中一个在这里:

- (NSManagedObjectContext *)childObjectContext{
if (_childObjectContext != nil) {
    return _childObjectContext;
}
_childObjectContext=[[NSManagedObjectContext alloc]   initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_childObjectContext setParentContext:self.managedObjectContext];
return _childObjectContext;
}
第二个私人背景:

- (NSManagedObjectContext *)childObjectContext2{
if (_childObjectContext2 != nil) {
    return _childObjectContext2;
}
_childObjectContext2=[[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_childObjectContext2 setParentContext:self.managedObjectContext];
return _childObjectContext2;
}

我认为问题在于“executeFetchRequest:error:”因为我的应用程序在上面冻结了。我会尽量简化我的问题。我使用“executeFetchRequest:error:”对每个上下文调用performBlock 里面。如果每个上下文都分配给他自己的线程,为什么要使用这个冻结应用程序?它不是线程安全的吗

[childObjectContext performBlock:^{
    [childObjectContext executeFetchRequest:request1 error:nil]
}];

[childObjectContext2 performBlock:^{
    [childObjectContext2 executeFetchRequest:request2 error:nil]
}];  

我无法复制,您的代码看起来正常。有些事你没有告诉我。