도서 '꼼꼼한 재은 씨의 스위프트: 기본편'을 공부하면서 정리한 내용입니다.
전체 목록은 여기에서 볼 수 있습니다.

  1. 직접 전달 방식(동기 방식)
    • 뷰 컨트롤러 -> 뷰 컨트롤러
  2. 간접 전달 방식(비동기 방식)
    • 뷰 컨트롤러 -> 저장소 -> 뷰 컨트롤러

💡 직접 전달 방식 (VC1에서 VC2로 바로 값을 전달)


VC1에서 VC2로 값을 전달하는 과정은 다음과 같다.

  1. VC1에서는 VC2로 전달할 값을 준비한다
  2. VC2에서는 값을 대입받을 프로퍼티를 정의한다
  3. VC1에서는 VC2의 인스턴스를 직접 생성하거나, 이미 생성되어 있는 인스턴스의 참조를 읽어온다
    • instantiateViewController // present, navigation controller
    • .destination // segue
  4. VC1에서는 2에서 정의한 VC2 인스턴스의 프로퍼티에 값을 대입한다
  5. VC1에서 VC2로 화면을 전환한다.

💡 간접 전달 방식 (저장소 사용하여 값을 주고 받기)


저장소 역할을 할 수 있는 객체는 다양하다.

  • AppDelegate
    • 앱 에서 단 하나만 존재
    • 여러 뷰 컨트롤러에서 모두 접근 가능
    • 앱 라이프 사이클과 동일 (앱 종료와 함께 데이터 소실)
  • UserDefaults
    • 값을 반영구적으로 저장
    • 간단한 데이터를 저장
  • Core Data
    • 값을 반영구적으로 저장
    • 복잡한 데이터를 저장
  • 파일에 저장
    • 이미지나 미디어 파일 등 큰 사이즈의 데이터인 경우
  • 서버에 저장