核心数据中的 mach_msg_trap

Posted

技术标签:

【中文标题】核心数据中的 mach_msg_trap【英文标题】:mach_msg_trap in core-data 【发布时间】:2009-06-13 07:08:16 【问题描述】:

mach_msg_trap 错误是什么意思? 我正在开发一个带有核心数据的应用程序。如果第二次“使用”不同的线程,则在 ManagedObjectContext 时出现此错误。 我有一个生产者消费者类型的线程系统。生产者线程和消费者线程使用相同的底层 sqlite db,但不同的 managedobjectContext 因为它们在不同的线程上。 但我希望生产者thead 检查新数据,如果有的话,我希望它更新我的 managedObjectContext。但它第二次运行应用程序崩溃给出上述结果。

请帮忙...

【问题讨论】:

【参考方案1】:

mach_msg_trap 是一个函数,而不是一个错误。具体来说,它是运行循环调用以等待某物到达的函数。该函数是您的应用程序如何在不使用 CPU 时间的情况下等待某事发生(I/O 完成、计时器触发、某事发布通知等)的方式。

但我希望生产者 thead 检查新数据,如果有的话,我希望它更新我的 managedObjectContext。

我不是核心数据专家,所以我不知道具体的解决方案,但我知道您从不向另一个线程的 MOC 发送消息。拥有独立的 MOC 是对的,而且你拥有它们是有原因的。

我建议您编辑您的问题,以澄清您在询问如何向一个托管对象上下文发出信号,表明另一个托管对象上下文已更改它们共享的数据存储。你的问题真的和mach_msg_trap无关。

【讨论】:

以上是关于核心数据中的 mach_msg_trap的主要内容,如果未能解决你的问题,请参考以下文章

核心数据支持的 UITableView 中的非核心数据数据

在核心数据中删除数据库中的对象的策略。 [RestKit/核心数据]

见Device中的核心数据表

核心数据中的触发器

iOS 中的核心数据故障

如何使用tableview删除核心数据中的数据