Вот мой сценарий: у меня есть поток, выполняющий тяжелые вычисления, в конце сохраняющий результаты через основные данные. У меня есть поток, настроенный с собственным пулом авто-релиза, и в нем создан собственный NSManagedContext
. Пользователь может изменить входные данные для вычисления в главном потоке, и в этом случае вычислительный поток завершается (посредством регулярных проверок переменной NSLocked
) и повторно запускается с новыми входными данными. Здесь все отлично работает.
По соображениям производительности поток вычислений не имеет менеджера отмены, и в самом конце сохраняется только один контекст. Если обнаружена команда завершения, я не хочу сохранять результаты. Сейчас я просто пропускаю сохранение контекста и выпускаю его, что, кажется, работает нормально.
Однако я заметил, что есть метод сброса для NSManagedContext
. Документация Apple по этому методу не очень полезна для меня. Он просто утверждает, что возвращает содержимое получателя в его базовое состояние и что все управляемые объекты получателя «забыты».
Что это значит? Это эквивалентно возврату к последней сохраненной версии? Требуется ли менеджер отмены для правильной работы этого метода? По какой причине я должен использовать этот метод вместо того, что я делаю сейчас?