iOS Fatal Exception: NSInternalInconsistencyException
Emmm.....
iOS 13 업데이트 이후 Fabric에 아래 에러가 늘어나기 시작했다.
Fatal Exception: NSInternalInconsistencyException
Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.
대충 Background Thread에서 Layout engine을 수정하면 안 된다는 의미인데,
자신의 코드를 보고 Main Thread 가 아닌 곳에서 UI 를 수정하고 있는 곳이 있는지를 보면 된다.
또한 그나마 다행으로 XCode 에서 Runtime Issue 를 표기해주는데
확인하는 방법은 Runtime Issue 이기 때문에 App을 실행을 한번 해주면,
그림 1처럼 문제가 되는 부분들이 표시된다.
그럼 해당 이슈를 클릭하여 따라 들어가서
문제가 되는 부분을
DispatchQueue.main.async { }
DispatchQueue.main.sync { }
등으로 상황에 맞게
코드를 감싸주면 된다.
주의할 점은 여기에 표시되는 이슈를
그대로 따라 들어가서
예를 들어 test.swift 파일에 221번째 라인이 에러라고 해서
그 부분만 문제가 되는 것이 아니라,
해당 코드와 관련된 스택안의 내용들이 문제 일 수 있기 때문에,
테스트를 해봐야 한다.
RuntimeIssue 경고는 문제가 되는 부분을
DispatchQueue.main.async { } 와 같이
메인 스레드로만 감싸주면 경고가 없어지긴 하지만,
경고만 없어질뿐 Error는 계속 발생할 가능성이 있다.