Основные проблемы с данными при использовании потоков

Я работаю над хобби-проектом, который медленно обновляю в свободное время, чтобы помочь освоить некоторые новые вещи. Один камень преткновения, с которым я столкнулся, - это работа с Core Data в отдельном потоке. Я прочитал документацию Apple по параллелизму Core Data, и все, что я прочитал, показалось достаточно простым, поэтому я начал обновлять свой проект для загрузки данных в фоновый поток, поскольку я не хочу блокировать пользовательский интерфейс во время загрузки.

Проект работает нормально, если объект Core Data загружен в основной поток. Сбой при переключении на фоновую загрузку.

На этом этапе я могу убедиться, что:

  • NSManagedObject загружается в поток, и я могу получить доступ к его свойствам
  • Вывод данных в стандартный вывод работает нормально и выглядит правильно.
  • Двоичное сравнение объекта данных, загруженного в основной поток, и данных, загруженных в фоновом потоке, доказывает, что они идентичны.

Реальная проблема возникает, когда я вызываю реализацию категории на NSData. Я могу убедиться, что объект NSData в порядке, когда он загружен в фоновом потоке, только когда я вызываю функцию для выполнения некоторой работы над объектом NSData после его загрузки, у меня возникает проблема. Проблема в EXC_BAD_ACCESS, которая обычно означает, что адрес объекта неверен, но это не имеет никакого смысла.

Я, вероятно, просто получаю что-то очевидное или простое неправильно - но я просто не вижу леса за деревьями.

Если вы думаете, что можете дать совет по этому поводу, так как это сводит меня с ума, тогда вы можете найти код здесь:

Редактировать пост-ответ: Удален URL, так как проект больше не существует.

1 ответ

Решение

Хорошо, я наконец узнал, в чем проблема. Метод декомпрессии превышал размер стека потока и поэтому вызывал странный и случайный EXC_BAD_ACCESS.

Я ожидал, что в этом случае отладчик выдаст более прямую подсказку.

Таким образом, реальная проблема " переполнения стека " решена.

Другие вопросы по тегам