Utility.managedObjectContext().performBlockAndWait({
})
dispatch_sync(dispatch_get_main_queue(), {
}).MainQueueConcurrencyType选项创建的。发布于 2015-05-12 09:28:59
您在这里混合了两个完全不同的概念,但是由于它是主线程/上下文/队列,所以您的组合被屏蔽了,并且“工作”。
托管对象上下文的performBlockAndWait:和performBlock:方法并不保证在哪个线程上执行块,只会安全地访问访问/变异的数据。由于您的上下文是主队列并发类型,所以例外情况是,只在主线程上接触performBlockAndWait:和performBlock:方法之外的对象是安全的。因此,当您将块排队在主队列上运行时,它保证在主线程上运行,因此您的数据是安全的。
主线程上的块执行不是原子的。否则,多线程有什么意义?为了确保数据安全,在访问数据时必须调用performBlockAndWait:和performBlock:方法。您可以保证主队列调度块将由其他主队列调度块不中断地运行,托管对象上下文队列(背景或主队列)是串行的,因此只允许一个块并发访问数据。
https://stackoverflow.com/questions/19369929
复制相似问题