Я уже несколько дней ломаю голову над этой проблемой, но безрезультатно и потерял здравомыслие.: |
Мое приложение настроено на отслеживание местоположения устройства, когда оно активно и в фоновом режиме, и я использую CoreData для создания и сохранения данных трека.Основной сущностью CoreData является «Маршрут», который имеет много сущностей «RoutePoint».Когда устройство получает новое местоположение из приложения CLLocationManager, новый объект RoutePoint добавляется к его родительскому маршруту.
Когда пользователь прекращает отслеживание, у него появляется возможность сохранить или отменить маршрут.Отказ от маршрута просто вызывает [_moc rollback], и, конечно, save будет вызывать [_moc save].Я использую метод ссылки на мой экземпляр NSManagedObjectContext на AppDelegate, а не на одноэлементный объект, который не сохраняется и не выпускается ни в одном из моих UIViewControllers.
Проблема возникает, если пользователь отправляет приложение в фоновый режим, когда отслеживание активно (таким образом, сущности Route и RoutePoint фактически не сохраняются в _moc).Когда приложение возвращается в активное состояние, пользователь останавливает выбранный маршрут, чтобы отменить его, когда происходит сбой приложения (вызывая «откат»).Однако, если тот же процесс повторяется, но пользователь сохраняет маршрут, а не отбрасывает его, сбоя не происходит, и он успешно сохраняется.Ха?!
Единственное, что я получаю в gdb, когда это происходит, это EXC_BAD_ACCESS, поэтому я делаю обратный ход, и вот результат:[_moc rollback], но я провел обширный поиск и пробовал разные вещи, даже сохранил и выпустил свой экземпляр MOC в этом UIViewController, но пока ничего не получалось.Очевидно, что что-то идет не так, когда приложение переходит в фоновый режим, но это было связано с MOC, тогда не произойдет ли аналогичный сбой и при сохранении?
Предложения приветствуются!:)