Ios 核心数据初始化堆栈中的冗余代码

Ios 核心数据初始化堆栈中的冗余代码,ios,objective-c,core-data,Ios,Objective C,Core Data,当我看到“初始化核心数据堆栈代码”时,我正在从《苹果指南》学习核心数据 我不明白为什么在第27行已经完成的情况下,您需要在第37行再次获取指向psc的指针。块作用域不是一直延伸到它所嵌入的函数吗 文档链接:在块捕获状态和执行块之间,需要操作的moc或psc可能已经更改 通过调用[self-managedObjectContext],竞争条件基本上被消除。主要是因为它是一个并发队列,因此,其他一些队列可能会并发地与moc或psc混在一起 也就是说,代码在某种程度上针对并发性问题进行了强化 disp

当我看到“初始化核心数据堆栈代码”时,我正在从《苹果指南》学习核心数据

我不明白为什么在第27行已经完成的情况下,您需要在第37行再次获取指向psc的指针。块作用域不是一直延伸到它所嵌入的函数吗


文档链接:

在块捕获状态和执行块之间,需要操作的
moc
psc
可能已经更改

通过调用
[self-managedObjectContext]
,竞争条件基本上被消除。主要是因为它是一个并发队列,因此,其他一些队列可能会并发地与
moc
psc
混在一起

也就是说,代码在某种程度上针对并发性问题进行了强化

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    NSError *error = nil;
    NSPersistentStoreCoordinator *psc = [[self managedObjectContext] persistentStoreCoordinator]