(Localization) Localization 때문에도 crash가 일어날 수 있나요?

SteadySlower·2024년 2월 8일
0

SwiftUI

목록 보기
62/64

지난 번 포스팅까지는 Localization의 개요와 String Catalog 소개, 그리고 SwiftUI에 어떻게 적용할 수 있는지 알아보았다. 이번 포스팅 부터는 Localization을 실제 적용하면서 겪었던 이슈들에 대해서 몇개의 짧은 포스팅을 통해서 소개하고자 한다.

Localization 때문에 Crash?

내 단어장 앱에는 선택된 단어를 현재 단어장에서 다른 단어장으로 이동 시키는 Modal이 있다. 그 Modal에서는 선택된 단어장의 갯수를 보여주는 Text View가 있다.

Localization을 적용하고 나서 그 Modal이 뜰 때마다 EXC_BAD_ACCESS Crash가 났다. EXC_BAD_ACCESS Crash는 잘못된 메모리에 접근할 때 나는 것인데, 기존 코드에서 바뀐 것은 Localization 밖에 없기 때문에 도저히 원인을 찾을 수가 없었다. String Catalog를 추가한 것 외에는 바뀐 코드가 하나도 없는데 왜 Crash가 나는 것인가?? 도저히 이해가 되지 않았다. 백번 양보해서 Localization이 실행되지 않는 것까지는 이해할 수 있는데 왜 Crash까지 나는 것이었을까?

원인 = 타입 불일치

열심히 원인을 찾던 중 String Catalog에서 위와 같은 부분을 발견하였다. %lld는 Int(정확히는 long long Int, 즉 Int64)를 의미한다. 반면에 %@는 String(사실은 이보다 더 포괄적이지만…)의 의미한다. Localized된 String 속에 있는 변수의 타입이 불일치하는 것이다. 이 타입의 불일치가 Crash의 원인이었다.

profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글