Я пишу приложение iOS, используя swift 4.2. Я делаю служебный вызов, чтобы выйти из системы. Мне нужно знать, где использовать основной поток (DispatchQueue.main.async). Вот мой код:
private func handleLogoutCellTap() {
logoutUseCase?.logout() { [weak self] (result) in
guard let self = self else { return }
switch result {
case let (.success(didLogout)):
didLogout ? self.handleSuccessfullLogout() : self.handleLogoutError(with: nil)
case let (.failure(error)):
self.handleLogoutError(with: error)
}
}
}
logoutUseCase?.logout() выполняет вызов службы и возвращает завершение @escaping. Должен ли я использовать DispatchQueue.main.async для всей этой функции handleLogoutCellTap() или только в сегменте обработки?
Переместите элемент управления на main thread
везде, где вы обновляете интерфейс после получения ответа logout
.
Если методы handleSuccessfullLogout()
и handleLogoutError(with:)
выполняют какую-либо операцию интерфейс, можно встроить весь switch statement
в DispatchQueue.main.async
, т.е.
private func handleLogoutCellTap() {
logoutUseCase?.logout() { [weak self] (result) in
guard let self = self else { return }
DispatchQueue.main.async { //here.....
switch result {
//rest of the code....
}
}
}
}
Да, я выполняю некоторые действия в пользовательском интерфейсе после получения ответа и помещаю весь оператор switch в DispatchQueue.main.async. Спасибо за ответ!