mach_msg_trap в основных данных - PullRequest
1 голос
/ 13 июня 2009

Что означает ошибка mach_msg_trap? Я разрабатываю приложение с core-data. Я получаю эту ошибку, когда ManagedObjectContext, если другой поток «используется» во второй раз. У меня есть продюсерская система потоков. Поток производителя и поток потребителя используют одну и ту же базовую базу данных sqlite, но разные по умолчанию управляемый объектContext, поскольку они находятся в разных потоках. Но я хочу, чтобы продюсер проверил новые данные и, если таковые имеются, я хочу, чтобы он обновил мой managedObjectContext. Но при втором запуске приложения происходит сбой, что дает приведенный выше результат.

Пожалуйста, помогите ...

1 Ответ

6 голосов
/ 15 июня 2009

mach_msg_trap - это функция, а не ошибка. В частности, это функция, которую цикл выполнения вызывает для ожидания чего-либо. Эта функция позволяет вашему приложению ожидать, пока что-то произойдет (ввод-вывод завершится, таймер сработает, что-то отправит уведомление и т. Д.), Не используя процессорное время.

Но я хочу, чтобы продюсер проверил новые данные, и, если таковые имеются, я хочу, чтобы он обновил мой managedObjectContext.

Я не специалист по основным данным, поэтому я не знаю конкретного решения, но я знаю, что вы никогда не отправляете сообщение в MOC другого потока. Вы вправе иметь отдельные МОС, и у вас есть для этого причина.

Я предлагаю вам отредактировать свой вопрос, чтобы уточнить, что вы спрашиваете, как сигнализировать одному контексту управляемого объекта о том, что другой контекст управляемого объекта изменил хранилище данных, которое они оба используют совместно. Ваш вопрос действительно не имеет ничего общего с mach_msg_trap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...