Я написал следующие фрагменты кода:
DispatchQueue.main.async {
self.cameraManager.checkForCameraAuthorization(deniedCallback: {
self.presentDeniedAlert()
self.activityIndicator.stopAnimating()
}) {
self.cameraAccess = true
self.cameraButton.isEnabled = false
self.activityIndicator.stopAnimating()
}
}
и
cameraManager.checkForMicrophoneAuthorization(deniedCallback: {
self.presentDeniedAlert()
self.activityIndicator.stopAnimating()
}) {
DispatchQueue.main.async {
self.microphoneAccess = true
self.microphoneButton.isEnabled = false
self.activityIndicator.stopAnimating()
}
}
}
(разница заключается в том, откуда вызывается async)
1. Сбои 1.self.cameraButton.isEnabled = false can only be called from main thread
2. Один хорошо заканчивается.
Может кто-нибудь объяснить, почему это так?