BOID

[iOS] 다른 뷰컨트롤러와 데이터 주고받기 - HoonIOS 본문

IOS 시작기

[iOS] 다른 뷰컨트롤러와 데이터 주고받기 - HoonIOS

HoonIOS 2021. 4. 2. 17:38

안녕하세요 HoonIOS입니다. :)

 

이번에는 뷰 컨트롤러들 사이에 값을 주고받는 방식인 직접 전달하는 방식, 간접 전달하는 방식에 대해 포스팅을 해보겠습니다.

 

뷰 컨트롤러들 사이에 값을 주고받는 방식은 두 가지 개념으로 나누어집니다.

  • 뷰 컨트롤러에서 다음 뷰컨트롤러로 값을 직접 전달하는 방식( 직접 전달 방식 )
  • 공통 저장소(DB, 코어 데이터)를 만들어 뷰 컨트롤러에서 공통 저장소로 값을 저장하고 화면을 이동하면 다음 뷰 컨트롤러에서 이 저장소를 열어서 값을 꺼내오는 방식입니다.

직접 전달하는 방식(동기 방식)

- 이 방식은 예를 들어 테이블 뷰에서 셀을 선택하면 상세 페이지로 넘어가 세부 데이터를 보여주는 방식을 사용할때 많이용을 합니다.

- 저장이 아니라 값을 전달하는거라 정보를 오래 저장할 필요가 없습니다.

- 이 방식을 사용하면 화면이 전환될 때 데이터가 함께 전달되거나, 화면이 전환되기 전에 데이터가 미리 전환되므로 전달되는 동안에 값이 소멸될 염려가 없습니다.

- 동기방식은 값을 전달 받을 뷰 컨트롤러에서 값을 다 파악하고 이를 대입할 변수를 미리 선언을 해주어야 합니다.

- 간접전달 방식에 비해 소스가 상당히 간결합니다.

동기 방식

간접 전달하는 방식(비동기 방식)

- 이 방식은 테이블 뷰에서 셀을 선택해서 상세 페이지로 넘어가 세부 데이터를 보여주는 방식을 사용할 때 많이 사용합니다.
- 예를 들어, 로그인에 성공을 하면 저장소에 해당 로그인 정보를 저장하고 화면을 전환하는 방식입니다.

- 단, 저장소에 있는 데이터가 저장되는 시점과 화면 전환 시점이 일치하지 않으면 값 전달이 제대로 안될수 있습니다.

이렇게 말하면 무슨 말이신지 모르시겠죠? :)

즉! 값 저장 버튼을 누르고 다른 화면으로 전환을 했는데 값을 저장하는 도중에 화면 전환을 해버리면 값 저장이 안 될 수 있습니다.

( 네트워크가 화면 전환보다 느리기 때문이죠 ㅠㅠ )

- 위 같은 일이 일어나지 않도록 처리가 필요하는데, 이 방식은 값을 직접 전달하는 위 방식보다 상대적으로 소스가 복잡할수가 있습니다.

또, 이것을 비동기 방식이라고 부릅니다. 

- 비동기 방식은 보내는쪽, 받는 쪽 모두 저장소의 위치를 사전에 공유하고 있어야 합니다.

그 이유는 값을 직접 전달하는게 아니라 저장소(DB, 코어 데이터)에 저장해 놓기 때문에 받는 쪽에서 저장소의 위치에 직접 접근할 수 있어야 하기 때문입니다.

- 지금까지 읽어보셨으면 어? 뭐야 값을 전달하는게 아니라 저장소에 값을 저장하고 다음 뷰에 값을 읽어오는 거잖아?라고 느끼셨을 거입니다.... 그게 맞아요!

비동기 방식

이번에는 간단한 동기, 비동기방식에 대해 알아봤습니다. 다음에는 이제 프레젠테이션 화면 전환을 이용한 직접 전달하는 방식에 대해 설명하고 예를 들어보겠습니다 :)

 

엄청 간단한거 같아 보이지만 중요한 것이므로 그냥 대충 SSG 보시는 것보다 잘 기억하고 넘어가시기를 추천할게요 ㅎㅎㅎ

반응형
Comments