TIL(Today I Learned)

1월 25일(월)

학습내용

  • Kahoot
    • HTTP 메서드는 PUT, POST, PATCH가 있다. (REMOVE가 아니라 DELETE)
    • 웹브라우저에 입력한 HTTP 주소의 기본 요청은 GET 이다.
    • HTTPS의 기본포트는 443, HTTP의 기본포트는 80이다.
    • HTTPS는 HTTP프로토콜에서 TLS(SSL) 프로토콜을 사용하여 세션 데이터를 암호화한다.
    • HTTP를 통해 JSON 데이터를 요청할 때 사용하기 적합한 클래스는 URLSessionDataTask이다.
      • URLSessionDownloadTask 백그라운드에서 오랜시간 받아야하는 파일을 받을때 사용.
      • URLSessionTask는 추상클래스이다. 그리고 URLSessionDataTask, URLSessionDownloadTask, URLSessionUploadTask의 부모클래스이다.
    • HTTP를 통해 큰 파일을 서버로 전송할 때 사용하기 적합한 클래스는 URLSessionUploadTask이다.
    • HTTP 요청에서 클라이언트 오류로 인하여 정상적으로 응답하지 못할때의 상태코드는 400번대이다.
      • 서버 오류는 500번대이다.
    • iOS 환경에서 뷰의 재사용은 테이블뷰, 컬렉션뷰 등에서 가능하다.
    • 테이블뷰 셀의 재사용 큐에 재사용 대기중인 셀의 수는 제어할 수 없다.
    • 테이블뷰의 셀은 재사용 전에 자동으로 초기화되지 않으므로 따로 초기화해줘야한다.
      • prepareForReuse에서 초기화해야한다.
  • CollectionView 활동학습
    • CollectionView Cell도 TableView Cell처럼 재사용된다.
    • CollectionView는 Supplementary View도 재사용한다.
    • CollectionView는 Flowlayout을 이용하여 여러 열로 셀을 정렬할 수 있다.
    • Human Interface Guideline에서 스크롤 뷰 두개를 겹쳐서 쓰지 말라고 한다. (세로 스크롤 안에 세로 스크롤을 넣는 것을 지양, 세로 스크롤 안에 가로스크롤을 넣는것처럼 axis가 다를 경우는 허용)
    • 리스트 형태도 CollectionView로 구현할 수 있다.
    • TableView는 section header, footer뿐만 아니라 tableHeaderView, tableFooterView가 있지만, CollectionView는 section header, footer 만 있다.

문제점/고민한점

  1. IndexPath의 row와 item 프로퍼티 두개 모두 존재해야 하는 이유는 무엇일까?
  2. IndexPath의 row와 item 프로퍼티 두개의 값이 동일할까?
  3. BoilerPlate Code가 무엇일까?

해결방법

  1. 테이블뷰는 세로로만 나오므로 row라는 말이 적합하지만, 컬렉션 뷰는 가로로도 나올 수 있어서 row라는 말은 적합하지 않으므로 item을 사용한다고 한다.
  2. 동일하다고 한다. (Jake)
  3. 여러 곳에서 거의 비슷한 코드 섹션이 반복되는 것을 BoilerPlate Code라고 한다. (테이블뷰를 사용하기 위해 데이터소스를 채택하고 row 개수를 반환하는 함수를 추가하는 것 처럼 반복되는 코드)

참고