Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Нарушение многопоточности: ожидается основной поток» - PullRequest
0 голосов
/ 28 января 2020

Мое приложение использует стороннюю библиотеку, и на определенных устройствах, таких как iOS 13.3

, происходит sh попытка вызова метода в главном потоке

Проверка основного потока: API пользовательского интерфейса вызывается в фоновом потоке: - [UIApplication statusBarOrientation] PID: 1496, TID: 390696, имя потока: (нет), имя очереди: com.apple. root .default-qos.overcommit, QoS: 0

2020-01-28 12: 31: 47.733875 + 0000 My BT Gotham [1496: 390696] *** Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «нарушение потока: ожидалось main thread '

Попытка вызова метода в фоновом потоке

Вот ошибка

  • Ошибка подтверждения в - [FBSSerialQueue assertOnQueue], /BuildRoot/Library/Caches/com.apple.xbs/Sources/FrontBoardServices/FrontBoard-626.4.1/FrontBoardServices/FBSSerialQueue.m:98 2020-01-28 17: 23: 47.972336 + 0000 My BT Gotham [1773: 459656] *** Завершение приложения из-за необученного исключение «NSInternalInconsistencyException», причина: «нарушение потоков: ожидается основной поток»

К сведению: я всегда использую метод API в фоновом потоке, и он работает нормально на большинстве устройств, проблема, Я цитировал выше работает только в некоторых устройствах.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
    [LibObj model_Method:self];
});

1 Ответ

0 голосов
/ 28 января 2020

Как представляется, вы вызываете методы пользовательского интерфейса из фона ... Это должно быть что-то вроде:

DispatchQueue.main.async {
  // use your method...
} 

Но если ваша сторонняя библиотека уже выполняет вызов DispatchQueue.main за сцены, возможно, что когда вы делаете ваш асин c вызов, он портится ...

...