SeSAC_iOS_Day 20 | TIL

린다·2021년 10월 26일
0

SSAC_iOS_Dev

목록 보기
16/33
post-thumbnail

👩‍💻 수업 & 추가 스터디

📂 동기 / 비동기

네트워크를 이용한 작업이 길어지는 경우 어떻게 처리할지에 대한 방식으로 동기와 비동기가 있다.

  • 한 번에 한 가지 일만 하는 것 = 동기
  • 한 번에 여러가지 일을 할 수 있도록 하는 것 = 비동기
    이를 위한 기술로 GCD, Operation 등이 있다.

📂 HTTP vs Socket

📂 REST API

📂 URL


1. 스킴(Scheme): 어떤 프로토콜을 사용할지 알린다(http, https 등)
2. 호스트(Host): 인터넷 상에서 유익할 식별(naver, google 등), IP주소가 올 수도 있다
3. 포트(Port): 보통 스킴이 기본 포트를 정의해준다(ex. http: 80, https: 43)
4. 경로(Path): 리소스에 대한 경로, 물음표나 크로스해치(#) 앞에서 종료된다
5. 쿼리(QueryString): 요청받을 리소스의 범위를 좁히기 위해 사용된다

  • URL에서는 기본적으로 아스키 코드값만 사용 가능
  • 한글, 특수문자 등 아스키 코드에 해당하지 않는 문자는 인코딩이 필요함

📂 Serialization

= encoding = 직렬화

  • 서버에서 사용하는 데이터 타입과 ios에서 사용하는 데이터 타입이 다르기 때문에~ 서로서로 사용가능한 객체로 변환해줘야함
  • 데이터는 크게 Value 타입과 Reference 타입으로 나뉘는데 Reference 타입은 메모리 주소를 주고 받도록 설정돼있음(특정 시스템에서만 사용할 수 있는 형태)
  • 이때 Reference Type을 서버에서도 사용할 수 있도록 Value Type으로 변경해주는 과정
  • 메모리 내 객체 ➡️ 문자열 (ex. Dictionary Type 객체 ➡️ JSON 형태의 문자열타입으로 변경)

cf. Decoding, Deserialization

  • JSON 문자열 ➡️ iOS에서 사용할 수 있는 객체 형태(Dictionary Type 객체, Struct, Class 등)
  • Xcode의 codable → 구조체에서만 사용할 수 있음(value type이라서~)

0개의 댓글