我什么时候应该使用 "performBlock" 方法?

When should I use "performBlock" method?

我使用 CoreData 并尝试发出异步获取请求。 请解释一下,为什么在那种情况下我应该使用 "performBlock" 方法

[managedObjectcontext performBlock:^{
    [managedObjectcontext executeRequest:asyncFetch error:&err];
}];

如果这种方式也有效?

[managedObjectcontext executeRequest:asyncFetch error:&err];

第一个与 "performBlock" 一起使用有什么好处?

方法 performBlock: 和 performBlockAndWait: 用于向您的 NSManagedObjectContext 发送消息,无论 MOC 是使用 NSPrivateQueueConcurrencyType 还是 NSMainQueueConcurrencyType 初始化的。如果您对这些上下文类型之一执行任何操作,则在一个块中执行。

performBlock:将块添加到后备队列并将其调度到 运行 在它自己的线程上。您可以将其用于长期持续操作,因为此块将 return 立即

performBlockAndWait:还将块添加到后备队列,并将其安排到 运行 在它自己的线程上。但是,直到块执行完毕,块才会 return,因此,这是一个阻塞调用。