CH 06. 뽀모도로 타이머 앱 만들기

최대 1 분 소요

Simulator Screen Shot - iPhone 11 Pro - 2022-04-10 at 19 43 18 Simulator Screen Shot - iPhone 11 Pro - 2022-04-10 at 19 43 32

기능 상세:
  • DatePicker를 통해 타이머 시간 설정
  • 시작 버튼을 누르면 타이머가 시작되고 일시 정지를 누르면 타이머가 일시정지
  • 취소 버튼을 누르면 타이머가 종료
  • 카운트 다운이 완료되면 알람이 울림
활용 기술:
  • DispatchSourceTimer
    • Timer
      특정 시간이 지난 후에 이벤트를 발생시킨다거나 반복적인 주기로 특정작업을 수행
      • 구현방법
        • Timer(Class)
        • DispatchSourceTimer(GCD API)
    • GCD(Grand Central Dispatch)
      작업을 병렬적으로 처리하기 위해 애플이 제공
      • Thread를 만들거나 관리하는 어려운 작업 맡음
      • Task들이 담긴 queue를 만들고 GCD로 던지면 모든 Thread를 관리
      • UI 관련 작업은 main thread에서 구현
        • main Thread는 iOS에서 하나만 존재
        • 일반적으로 작성한 대부분의 코드는 main Thread에서 실행
        • 작성한 코드가 cocoa에서 실행되는데 cocoa가 코드를 main Thread에서 호출하기 때문
        • main thread = interface thread 유저가 인터페이스에 접근하면 이벤트는 메인 스레드에 전달되고 작성한 코드는 이에 반응
        • 인터페이스와 관련된 코드는 메인스레드에서 작성
  • UIView Animation
    UIView 클래스는 애니메이션에서 사용되는 api를 타입메서드로 제공하고 이 메서드를 활용해서 비교적 단순한 코드로 애니메이션 구현
    • DaterPicker에서 TimerLabel로 자연스러운 전환
    • 토마토 이미지 회전
에러:

Thread 1: EXC_BREAKPOINT

  • 타이머를 suspend 메서드를 호출해서 일시정지를 하게 되면 아직 수행해야할 작업을 의미하기 때문에 suspend된 타이머에 nil을 대입하게 되어 런타임에러 발생

    -> suspend전 resume 메서드 호출

카테고리:

업데이트: