API를 통해 가져온 데이터로 UI를 업데이트할 때
DispatchQueue.global().async 를 사용했더니 위와 같은 에러가 발생했습니다.
찾아보니, UI 업데이트와 관련된 작업은 main thread에서 실행해야 하는데
background thread에서 실행해서 발생한 에러입니다.
Xcode에서 제공하는 runtime tools 중 Main Thread Checker가 있는데
이 tool은 기본 스레드에서 실행해야 하는 시스템 API가 실제로 해당 스레드에서 실행되는지 확인합니다.
AppKit 및 UIKit UI API에 적용되며, 일부 다른 시스템 API에도 적용됩니다. 기본 스레드에서 이러한 API를 호출하면 관련 작업의 실행을 직렬화하여 경합 조건을 방지할 수 있습니다. 이는 시각적 결함, 데이터 손상 또는 충돌을 막아줍니다.
※ 참고 출처