@synchronized (self.class) {
fetchedObjects = [moc executeFetchRequest:request error:&error];
}
moc 是一个 managedObjectContext
可以是主线程对应的moc。该 moc 是所有 MOC 的父级。
其他 moc 只是孩子。有时当孩子执行executeFetchRequest时,它也会让父moc执行相同的executeFetchRequest。
我经常看到的是
外主线程:
@synchronized (self.class) {
fetchedObjects = [moc executeFetchRequest:request error:&error]; //semaphore_wait_trap here
}
在主线程上
@synchronized (self.class) {//_psynch_mutexwait
fetchedObjects = [moc executeFetchRequest:request error:&error];
}
好吧...为什么会出现僵局?即使主线程上的 moc 对应于主线程,它根本没有被访问。它在@synchronized 处等待。那为什么要fetchedObjects = [moc executeFetchRequest:request error:&error];
等呢?