gpt4 book ai didi

ios - 核心数据 Perform() performAndWait() 100% 不确定

转载 作者:搜寻专家 更新时间:2023-11-01 07:04:08 26 4
gpt4 key购买 nike

我有点不确定我是否理解 Core Data 中 perform() 和 performAndWait() 函数的概念。

我们可以有两种类型的上下文:

1) .mainQueueConcurrencyType (main Queue)
2) .privateQueueConcurrencyType (background Queue)

对于这两种情况,我都能理解 performAndWait() 的目的它等待执行 block 代码,然后继续。

对于 privateQueueConcurrencyType,文档说:

The NSPrivateQueueConcurrencyType configuration creates its own queue upon initialization and can be used only on that queue. Because the queue is private and internal to the NSManagedObjectContext instance, it can only be accessed through the performBlock: and the performBlockAndWait: methods.

但是 mainQueue 中的 perform() 的目的是什么??

当我们在 mainQueue 上有一个上下文并且我们更新/删除/不管怎样一个 NSManagedObject 是不是在 mainQueue 上发生了?那么 perform() 的目的是什么?

最佳答案

When we have a context on mainQueue and we update/delete/what-ever a NSManagedObject isn't that happening on the mainQueue anyway?

如果您从其他队列调用这些方法会怎样?如果代码在其他某个队列上执行,它可以在使用主队列并发的托管对象上下文上调用 performperformBlockAndWait。即使调用代码不在主队列中,该闭包中的代码也会在主队列中执行。

例如:

let customQueue = DispatchQueue(label: "queuename")
customQueue.async {
// ... do some stuff ..
mainQueueContext.performAndWait {
// ... do some stuff on the main queue ...
}
// ... do some more stuff ...
}

关于ios - 核心数据 Perform() performAndWait() 100% 不确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49095702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com