관리 메뉴

꿀맛코딩

iOS Fatal Exception: NSInternalInconsistencyException 본문

공부방/iOS

iOS Fatal Exception: NSInternalInconsistencyException

soycrab 2019. 11. 4. 18:08

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

 

그림 1처럼 문제가 되는 부분들이 표시된다. 

 

그럼 해당 이슈를 클릭하여 따라 들어가서 

문제가 되는 부분을 

DispatchQueue.main.async { } 

DispatchQueue.main.sync { }  

등으로 상황에 맞게

코드를 감싸주면 된다.

 

주의할 점은 여기에 표시되는 이슈를 

그대로 따라 들어가서 

예를 들어 test.swift 파일에  221번째 라인이 에러라고 해서 

그 부분만 문제가 되는 것이 아니라, 

해당 코드와 관련된 스택안의 내용들이 문제 일 수 있기 때문에, 

테스트를 해봐야 한다. 

 

RuntimeIssue 경고는 문제가 되는 부분을 

DispatchQueue.main.async { }  와 같이 

메인 스레드로만 감싸주면 경고가 없어지긴 하지만,

경고만 없어질뿐 Error는 계속 발생할 가능성이 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
Comments