[IOS] #7 URLSession

East Silver·2022년 1월 2일
0

openweatherAPI를 이용한 날씨 정보 앱!

codable

codable을 채택한 구조체를 이용해서 서버에서 전달받은 Json 데이터를 디코딩한다.

typealias Codable = Decodable & Encodable

codable은 Decodable와 Encodable 포로토콜을 준수하는 타입이다.
즉, Json 인코딩과 디코딩이 가능하다.

Json의 키와 프로터티 이름을 다르게 하고 싶다면...
String, CodingKey를 채택하여 사용할 수 있다.

코드를 입력하세요

URLSession

특정한 url 을 이용하여 데이터를 다운로드하고 업로드하기 위한 API

URLSessionConfiguration - 생성

  • 공유세션(싱글톤)
  • 기본세션: 직접 원하는 설정을 할 수 있다.
  • 임시세션
  • 백그라운드

URLSessionTask - 한개 이상의 task 생성

  • URLSessionDataTask: 데이터 요청 응답. 짧고 빈번한 요청일때 사용.
  • URLSessionUploadTask
  • URLSessionDownloadTask
  • URLSessionStreamTask
  • URLSessionWebSocketTask

URLSession Life Cycle

  1. Session Configuration 을 결정하고, Session 을 생성
  2. 통신할 URL과 Request 객체를 설정
  3. 사용할 Task 를 결정하고 그에 맞는 Completion Handler 나 Delegate 메소드들을 작성
  4. 해당Task를실행
  5. Task 완료 후 Completion Handler 클로저가 호출이 됨

JSONDecoder()

사용자가 정의한 타입으로로 디코딩 할 수 있다.

DispatchQueue.main.async

네트워크 작업은 별도의 스레드에 진행해 응답이 온다고 해도 메인스레드에 오지 않기 때문에 Completion Handler에서 UI작업을 한다면, 메인스레드에서 작업을 할 수 있도록 해야 한다.

질문

  • [weak self]
    • Weak reference(약한 참조)는 Retain Cycle(순환 참조)로 인한 메모리 릭을 벗어나기 위해 사용한다.
  • self 왜 이렇게 많지..?ㅋㅋ
profile
IOS programmer가 되고 싶다

0개의 댓글