[키오스크] 있었는데요 없었습니다

김하민·2024년 11월 28일
1
post-thumbnail

제목을 본 사람들의 반응은 크게 세 가지로 나뉠 것으로 예상하는데요,

  1. "이게 무슨 말이냐..."라고 의문이 드셨을 분,
  2. "아 이 밈 중독자 [검열됨] 또 이러네"라고 생각하셨을 분,
  3. "뭔가 사라지는 버그를 발견했나 보구만"이라고 눈치채신 눈치 빠른 분.

네.

이 포스트는 무언가 사라지는 버그를 잡는 과정을 기록한 포스트입니다.

이 글을 눈치 빠른 3번 유형의 사람들에게 바칩니다.

그래서 무슨 버그냐?

백문이 불여일견이라고, 일단 보여드리겠습니다.

네... 말이 필요없죠...

굳이 말로 풀어서 쓰자면,
음료 갯수를 더하거나 빼면 갯수를 표시해주는 라벨이 뒤틀리거나 사라지는 버그입니다.

아니 왜 이러는 걸까요?

생각을 해봅시다.

처음에는 말이죠...

연산 프로퍼티 didSet을 사용해서 라벨의 텍스트가 변경되는 방식이라, 그 녀석을 의심했습니다.

근데 암만 봐도 그건 아닌 것 같더라고요. 그랬다면 애초에 초기 설정부터 이상하게 되었을 테니까요.

라벨 레이아웃이 뒤틀리는 것으로 보아,
라벨을 설정해주는 함수를 라벨이 바뀔 때 마다 다시 호출해야 하나?라는 생각도 했습니다.

그리고 이런저런 생각을 머릿속으로 했지만 결과적으론 틀린 추론이었습니다.

그래서 답답한 마음에 계속해서 버그를 뚫어져라 보다보니 미묘한 점을 발견했습니다...

미묘한 움직임

버튼을 클릭할 때 가격 표시와 +/- 버튼이 움찔거리는 것이 보이시나요?

저기가 뭔가 의심스러웠습니다.

그리고 그 의심은 아래에서 점점 확신이 되어갔습니다.

계속 일부러 고장내보자

그래서 일부러 고장내고 View Hierarchy를 보고 단서를 찾으려고 하였습니다.

위의 View Hierarchy를 토대로, 아래와 같이 추측했습니다.

  1. 음료의 갯수를 표현하는 숫자 라벨의 너비가 변경됨 (1 >> 2나 9 >> 10 처럼 너비가 크게 변하면)
  2. 그 숫자 라벨을 둘러싸고 있는 -/+ 버튼의 위치가 오락가락함.
  3. 숫자가 바뀌면서 오락가락하다가 뷰가 무너짐. (이에 대한 정확한 명칭은 잘 모르겠습니다...)

그래서...?

설마 숫자 라벨에 constraint가 적용이 안 되어서 와장창 무너진 것은 아닌가?

라는 가설을 세우고, 해결하기 위해 아래 코드로 숫자 라벨의 widthAnchor와 heightAnchor의 constraint를 지정해줬습니다.

label.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint.activate([
    label.widthAnchor.constraint(equalToConstant: 10)
    label.heightAnchor.constraint(equalToConstant: 10)
])

문제가 확인되었을까요?

빌드를 눌러서 확인해봅시다.

빌드가 안되네?

급하게 하느라 쉼표를 까먹었읍니다

ㅎㅎㅎ...

넣어주고 다시 해봅시다.

잡았다 요놈

오...!

좀 찌부되긴 했는데 여튼 일단 해결했잖습니까?

해결 방법을 발견하고 신나서 버그를 발견한 팀원에게 자랑을 하고 밥을 먹으러 갔습니다.

근데 밥을 먹고 온 사이 팀원이 코드를 수정하였다네요...?

어... 음... 떠넘기려는 건 아니었는데 그게... 그렇게 보이긴 하네요;

열심히 일한 우리 팀원에게 큰 박수 부탁드립니다.

여튼 팀원이 수정해준 최종 결과물은 이렇습니다:

최종 결과물

깔끔하네요.

It ain't over, 'til it's over

이렇게 해피해피엔딩이었다면 좋았겠지만...

저희 팀은 또 다른 문제를 맞닥뜨리게 됩니다.

(대충 다음에 계속된다는 소리)

4개의 댓글

comment-user-thumbnail
2024년 11월 28일

너모 재밋고

1개의 답글
comment-user-thumbnail
2024년 11월 30일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 뷰 하이라키 진짜 어지럽고 열받는다

1개의 답글