Мне нужно создать / загрузить / запустить маршрутную точку на одной кнопке. Когда пользователь нажимает кнопку, дрон должен двигаться вверх на определенное количество точек в зависимости от текущей позиции. Пользователь может остановить миссию и снова начать новую. Мой лог c здесь следующий:
- Я инициализирую миссию с точками
- Загрузка миссии
- Добавление слушателей к оператору миссии
- Загрузка миссии
- Миссия начинается на слушателе
missionOperator.addListener(toUploadEvent: self, with: DispatchQueue.main) { (event) in
if event.currentState == .readyToExecute {
self.startMission()
}
}
Я читаю документацию в течение нескольких дней и пытаюсь понять, как это работает, но я что-то упускаю, очевидно. Слушатели создаются на операторе миссии путевой точки, но если я создаю слушателей перед загрузкой миссии, их не вызывают. Если я создаю слушателей каждый раз, когда загружаю миссию, startMission () вызывается несколько раз (первый раз вызывается, но после того, как одна миссия остановлена или завершена, в следующий раз startMission () вызывается два раза)
Так Я думаю, что мои вопросы будут такими: Какой подходящий момент, чтобы добавить слушателей и удалить их, так как я вызываю startMission () из слушателей? На самом деле, что является подходящим способом для запуска / загрузки / запуска миссии на одну кнопку, и быть в состоянии сделать это несколько раз?