728x90
constraint의 priority 설정 시에 iOS12에서 priority를 1000으로 설정할 경우 크래시가 발생한다는 내용이다.
deleteButtonTop.priority = .init(1000)
Root cause
constraint의 UILayoutPriority는 기본적으로 required, non-required로 구분된다.
- required:
- rawValue 1000에 해당하는 priority
- 기본적으로 모든 constraint은 xib에서 생성될 때 따로 설정을 안하면 required로 지정되어있다.
- non-required:
- required보다 낮은 숫자에 해당하는 priority
- enumeration case로는 defaultLow(250), defaultHight(750)이 존재한다.
apple 가이드 문서에 따르면 required에서 non-required로, 혹은 그 반대의 경우로 수정하는 것이 허용되어있지 않다고 한다.
근데 iOS13부터는 이런 제한이 사라진 것 같고 iOS12까지만 제한이 있는 것 같다.
때문에 priority값을 나중에 변경할 필요가 있다면, 위의 크래시를 피하기 위해서 priority를 non-required값을 사용해야한다.
ex) 999 - 250, defaultHigh - defaultLow
728x90
'iOS > 이슈' 카테고리의 다른 글
[iOS Issue] command codesign failed with a nonzero exit code (0) | 2024.03.17 |
---|---|
[iOS Issue] Shadow 관련 run time issue (0) | 2023.01.07 |
[iOS Issue] CALayer의 contents의 image가 안보임 (0) | 2022.06.25 |
[iOS Issue] Undefined Symbol error (0) | 2022.06.20 |
[iOS Issue] CLLocationManager 사용 시 주의할 점 (0) | 2022.05.30 |
댓글