iOS 12 - NSInternalInconsistencyException

에러 메세지

아래와 같은 크래시 리포트가 올라왔다.

Fatal Exception: NSInternalInconsistencyException
Mutating a priority from required to not on an installed constraint (or vice-versa) is not supported. You passed priority 750 and the existing priority was 1000.

iOS 12, iPadOS 12 에서만 발생하고 있었음

 

원인

아래 오류 설명을 보면 이미 설치된 constraint의 우선순위(priority)를 바꿀 수 없다고한다

Fatal Exception: NSInternalInconsistencyException
Mutating a priority from required to not on an installed constraint (or vice-versa) is not supported. You passed priority 750 and the existing priority was 1000.

 

기존 코드를 보면 같은 UILabel에 대해 두개의 constraint를 잡아두고 초기에 둘 다 install을 한 후, 코드에서 priority를 바꿔주고 있었다.

이렇게 되면 같은 컴포넌트에 대해서 서로 다른 constraint가 설치되고, 초기에 1000(required)로 설정된 후 priority 하락으로 not required가 되어 문제가 생기나보다.

 

 

해결

따라서 아래와 같이 priority로 조정하지 않고 활성화여부(isActive)로 조정하도록 수정하였고 해결함.