- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道 NSPrivateQueueConcurrencyType 上下文是否仅在 -performBlock 和 -performBlockAndWait 中运行。和从 NSPrivateQueueConcurrencyType 上下文返回的 NSManagedObject 无法在 performBlock 之外访问?
我从苹果文档“What's new in iOS 5.0”中找到了下面这句话
When sending messages to a context created with a queue association, you must use the performBlock: or performBlockAndWait: method if your code is not already executing on that queue (for the main queue type) or within the scope of a performBlock... invocation (for the private queue type). Within the blocks passed to those methods, you can use the methods of NSManagedObjectContext freely.
如果是,为什么 MagicalRecord 和 XMPPFramework 不在 block 内操作上下文和 NSManagedObject?
最佳答案
我不知道 MagicalRecord 和 XMPPFramework 中的代码做什么或不做什么。您需要通过他们的正常支持方式与他们联系。
但是,我可以告诉您,如果您使用 NSPrivateQueueConcurrencyType 创建 MOC,那么访问该 MOC 或该 MOC 拥有的托管对象的唯一方法是通过 performBlock* API。
如果您使用 NSMainQueueConcurrencyType 创建一个 MOC,那么您可以在主线程中运行或通过 performBlock* API 访问它。
如果您使用 NSConfinementConcurrencyType 创建 MOC,则您只能从创建 MOC 的线程访问 MOC。如果未指定并发,则默认使用限制。
这些是当前创建 MOC 的唯一方法,以及它们的使用规则摘要。
我相信 MagicalRecord 使用限制并为每个线程保留一个 MOC,但我从未使用过它,并且只查看了旧版本的代码库,因此随着嵌套上下文的出现,它可能会发生很大变化。
关于objective-c - NSPrivateQueueConcurrencyType 上下文只能在performBlock 内操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436358/
我在使用子上下文作为 NSPrivateQueueConcurrencyType 的便签本时遇到了问题。 我的核心数据栈是这样的: View Controller 使用主上下文。 Worker Con
在 AFNetworking 从我的应用服务器获取信息后,将调用以下方法来填充我的 Core-Data。 这些信息似乎工作得很好,因为当表格更新时,我可以看到 UITableView 中正在更新的新信
在 AFNetworking 从我的应用服务器获取信息后,将调用以下方法来填充我的 Core-Data。 这些信息似乎工作得很好,因为当表格更新时,我可以看到 UITableView 中正在更新的新信
这两天我一直在尝试让 Core Data 与多线程一起工作。我尝试使用 NSOperations 的标准线程限制方法、合并通知、使用 objectWithId、每个线程的上下文字典,但我仍然遇到奇怪的
我在 connectionDidFinishLoading:connection NSURLConnection 异步委托(delegate)方法中使用此代码,同时下载大量数据。 - (void)sa
我正在开发一个需要多次异步下载并将其内容保存到核心数据实体的应用程序。其中一个下载量很大,并且注意到在创建/写入托管对象上下文时 UI 被阻止。我的研究让我阅读了并发核心数据设置,并开始实现其中之一。
我正在使用 NSPrivateQueueConcurrencyType NSManagedObjectContext 并且在以下情况下会发生死锁。 在后台线程上,调用 performBlock: 。该
正如标题所说,问题是,如果一个 NSManagedObjectContext 并发类型 NSPrivateQueueConcurrencyType 是串行的还是并发的。 更具体地说,如果我调用 [ma
使用 NSMainQueueConcurrencyType 和 NSPrivateQueueConcurrencyType 初始化的托管对象上下文连接到主队列和私有(private)队列,它们是串行队
我想知道 NSPrivateQueueConcurrencyType 上下文是否仅在 -performBlock 和 -performBlockAndWait 中运行。和从 NSPrivateQueu
我仍在为我的 RSS 阅读器编写代码,我已经到了这样的地步,我希望通过后台立即用最新的帖子填充我的 Feed 来让事情变得更顺畅。 问题是它使我的应用严重崩溃,并显示如下消息: 2013-10-02
我正在使用 NSPrivateQueueConcurrencyType 并发类型而不是 NSMainQueueConcurrencyType 遇到卡住(死锁?)。 我的上下文初始化: _managed
自 iOS 5 起,CoreData 引入了自己的私有(private)队列,您可以在其中让某些操作(特别是保存上下文)在后台运行。 这必须通过[context PerformBlock:...]完成
问题:当相关的 NSManaged 对象具有自定义 setter 时,使用后台线程获取托管对象不会正确延迟加载 NSManaged 对象关系。在具有主并发类型的主线程上执行提取没有问题。这是为什么?
我有一些现有的 Core Data 代码,它们使用 10.6 及更早版本的模式,在每个新线程中创建一个新的 NSManagedObjectContext,根据需要执行数据修改,保存 NSManaged
在 macOS 应用程序上,我有一个简单的 AddEditViewController,它从主视图 Controller 接收 NSManagedObject。然后,我创建一个子 NSManagedO
我是一名优秀的程序员,十分优秀!