CoreMotion многое делает сам во время инициализации.
Переместить инициализацию сделать другой поток.
Изменить:
Я могу подтвердить проблему с 12.2 на iPhone Xs разработки. Нет проблем на реально используемом устройстве. Я также вижу предупреждения о нарушении, сообщающие, что CoreMotion пытается получить доступ к Приложению состояний из фонового потока.
Однако перемещение init в отдельный поток исправляет любые зависания пользовательского интерфейса. Инициирование coremotion все еще занимает некоторое время. Я создал пустой проект приложения с одним представлением и изменил класс ViewController
class ViewController: UIViewController {
var motionManager: CMMotionManager?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
view.backgroundColor = UIColor.red
DispatchQueue.global().async {
self.motionManager = CMMotionManager()
DispatchQueue.main.async {
self.view.backgroundColor = UIColor.green
}
}
view.backgroundColor = UIColor.yellow
}
}
Без отдельной нити красный цвет остается. С отдельной нитью цвет мгновенно становится желтым и, наконец, зеленым на dev XS и мгновенно зеленым на моем iPhone 8Plus.
Дополнение:
Интересно, что без подключенного XCode у устройства dev проблем нет.
Попробуйте запустить свой код без подключения к отладчику.