[IOS] 에러 : Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.

이 에러는 주로 다중 스레드 환경에서 발생하는 런타임 에러 중 하나입니다. 주로 UI 라이브러리나 그래픽 렌더링 엔진과 관련하여 발생합니다.

해당 에러 메시지는 다음과 같은 의미를 가집니다: “메인 스레드에서 레이아웃 엔진에 접근한 후에는 백그라운드 스레드에서 레이아웃 엔진에 대한 수정을 수행해서는 안 됩니다.”

이런 종류의 에러는 주로 다음과 같은 상황에서 발생할 수 있습니다:

  1. 다중 스레드 환경: 보통 UI 애플리케이션에서 발생합니다. 메인 스레드는 사용자 인터페이스와 상호작용하고, 백그라운드 스레드는 비동기 작업을 처리하는 데 사용됩니다. 만약 백그라운드 스레드가 메인 스레드와 동시에 레이아웃 엔진을 수정하려고 한다면, 동기화 문제가 발생하여 오류가 발생할 수 있습니다.

  2. 비동기 작업: 비동기 작업을 통해 메인 스레드와 별개의 백그라운드 스레드에서 동시에 레이아웃 엔진을 수정하려고 할 때 발생할 수 있습니다.

이러한 상황에서는 보통 다음과 같은 방법으로 문제를 해결할 수 있습니다:

모든 경우에, 메인 스레드와 백그라운드 스레드 간의 작업을 조율하고 동시 수정을 방지하는 것이 중요합니다. 이렇게 함으로써 다중 스레드 관련 문제를 방지하고 안정적인 애플리케이션을 개발할 수 있습니다.

조치 : main thread에서 UI를 그리도록 수정