TIL(Today I Learned)

2월 22일(월)

학습내용

  • Kahoot
    • 반복적이고 동일한 형식의 대량의 데이터를 다루기 적합한 기술(데이터베이스 관련 기술)은 MySQL, CoreData, MariaDB, SQLite이다.
    • 데이터베이스의 구조를 변경하기 위해 꼭 거쳐야하는 작업은 Migration이다.
    • 현재 가장 널리 쓰이는 데이터베이스 형식으로 테이블 사이의 관계를 통해 데이터를 관리하는 데이터베이스 형식은 관계형 데이터베이스이다.
    • Core Data가 저장할 수 있는 데이터 형식은 Binary, SQLite, In-Memory 이다.
    • iOS 개발 환경에서 사용하는 의존성 관리도구는 Carthago, CocoaPods, Swift Package Manager가 있다.
    • Core Data의 저장소는 멀티스레딩을 지원하지 않는다.
  • TouchEvent
    • UIEvent의 여러 이벤트 중의 하나이며, 터치 이벤트는 UITouch의 인스턴스를 프로퍼티로 저장한다.
  • ResponderChain
    • Responder 객체들로 이루어진 체인이다.
    • 이벤트가 전달되는 순서이다. 이벤트가 처리될 때까지 순서대로 이벤트가 전달된다. 처리되면 전달이 끝난다.
    • 터치 이벤트가 발생하면 ResponderChain을 순회하면서 이벤트를 처리할 Responder를 찾고, Responder에서 touchesBegan(_:with:) 같은 메서드를 호출하게 된다.
  • hitTest
    • ResponderChain 에서 어떤 뷰가 이벤트를 처리할것인지를 결정하기 위한 메서드이다.
  • 완전한 구현이 어렵거나 불가능한 요구사항을 만났을 때는 무작정 시간을 투자하는 것 보다 기획자와 협의하여 요구사항을 구현 가능한 방향으로 수정하는 것도 한가지 방법일 수 있다.

문제점/고민한점

  1. Gesture Recognizer VS touchesBegan 둘 중 무엇이 먼저 호출되는가?

해결방법

  1. touchesBegan이 먼저 실행된다. 뷰가 터치 이벤트를 처리할 responder로 선택이 되면(hitTest의 return 값에 따라 결정) touchesBegan이 먼저 호출된다. Gesture Recognizer는 터치 이벤트가 tap이라는게 결정 된 이후에 호출된다고 한다.

참고