TIL(Today I Learned)

12월 8일(화)

학습내용

  • 코드 토론
    • 그린, 찌로가 각자가 구현한 회원가입 앱의 코드를 발표하였다.
    • 그린이 addTarget을 이용하여 textField의 text 수정이 일어날때 마다 함수 호출하는 것을 일괄적으로 처리한 것이 인상 깊었다.
      • addTarget(_:action:for:) 함수를 이용하여 touchUp, valueChanged 같은 이벤트가 발생했을때 호출할 함수를 등록할 수 있다.
    • 찌로가 뷰컨트롤러 전환? 을 스토리보드가 아닌 코드로 구현한 것을 보면서 코드로 뷰컨트롤러 전환 하는 방법을 배웠다.
      • self.storyboard?.instantiateViewController() 함수를 이용한다.
  • 십진 계산기 구현
    • 십진 계산기의 사칙연산 기능을 구현하였다.
    • 이를 구현하기 위해서는 infix를 postfix로 바꾸는 과정과 postfix로 바뀐 수식을 연산하는 과정, 총 두 개의 과정을 거쳐야한다.
    • infix를 postfix로 바꾸는 과정과 postfix로 바뀐 수식을 연산하는 과정 모두 stack이 필요하며, 두 개의 stack을 이용하여 이를 구현할 수 있다.

문제점/고민한점

  • 그린이 회원 가입 코드를 발표하면서 AppDelegate의 window property를 선언하지 않으면, 실행이 안된다고 하는데 내 시뮬레이터에서는 실행이 잘 되는 이유가 궁금하다.
  • 찌로가 회원 가입 코드를 발표하면서 navigationController?.pushViewController()이 실행되지 않는다고 하는데 원인이 뭘까?

해결방법

  • 그린이 회원 가입 코드를 발표하면서 AppDelegate의 window property를 선언하지 않으면, 실행이 안된다고 하는데 내 시뮬레이터에서는 실행이 잘 되는 이유가 궁금하다.
    • 그린의 시뮬레이터는 iOS 12 라서 AppDelegate에 window property가 필요하였지만, 내 시뮬레이터는 iOS 14 라서 SceneDelegate의 window property를 사용하기 때문에 AppDelegate에 또 window property를 추가하지 않아도 실행이 잘 되었다.
  • 찌로가 회원 가입 코드를 발표하면서 navigationController?.pushViewController()이 실행되지 않는다고 하는데 원인이 뭘까?
    • navigationController가 nil이라서, Optional Chaning에 실패하여 pushViewController를 실행할 수 없었던 것이다. instantiateViewController를 navigationController로 하지 않아서 navigationController가 초기화되지 않았기 때문에 생긴 문제로 보인다.