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 만 있다.
문제점/고민한점
- IndexPath의 row와 item 프로퍼티 두개 모두 존재해야 하는 이유는 무엇일까?
- IndexPath의 row와 item 프로퍼티 두개의 값이 동일할까?
- BoilerPlate Code가 무엇일까?
해결방법
- 테이블뷰는 세로로만 나오므로 row라는 말이 적합하지만, 컬렉션 뷰는 가로로도 나올 수 있어서 row라는 말은 적합하지 않으므로 item을 사용한다고 한다.
- 동일하다고 한다. (Jake)
- 여러 곳에서 거의 비슷한 코드 섹션이 반복되는 것을 BoilerPlate Code라고 한다. (테이블뷰를 사용하기 위해 데이터소스를 채택하고 row 개수를 반환하는 함수를 추가하는 것 처럼 반복되는 코드)
참고