inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)

질문 올립니다

해결된 질문

501

구달

작성한 질문수 1

0

안녕하세요 강사님 질문이 있어 문의 드립니다.

데이터 바인딩 관련인데요. 데이터 바인딩이 모델을 view에 바인딩 함으로써, 모델이 변경될시 뷰에 업데이트 해주는 개념으로 알고 있는데 이게 맞을까요?

강사님 사진에 바인딩 방향이 제가 알고 있던 데이터 바인딩 방향이 달라서 약간 혼돈이 오고 있는 상황입니다

(반대로 되어야 되지 않나 생각하고 있습니다)

스크린샷 2023-01-13 22.48.35.png아니면 데이터 바인딩 이라는게 방향과 상관없이 그냥  바인드 되어 있을시 한쪽이 변경되면 한쪽이 변화되는 개념을 말하는 걸까요?

추가로) 아래 와같은 코드를 구성하고 있는데요 

  1. Rxcocoa를 이용하여 input을 받아 viewModel 스트림에 넣어주고

  2. viewModel 스트림에 변화가 생길시 view에서 output을 구독하게끔 바인드 처리 

1번을 통해서 view가 변경되면 model(스트림)이 변경되고

2번을 통해서 변경된 모델을 통한 view 갱신이 일어나고 있는데요.이럴경우 양방향 데이터 바인딩이라 하는게 맞는 건가요?

감사합니다.

ios MVC architecture mvp mvvm

답변 1

0

배언수

안녕하세요. 다소 헷갈릴 수 있는 부분인데 올려주신 그림에서 뷰 -> 뷰모델 방향의 화살표는 데이터 바인딩의 방향이 아닌 의존성의 방향이라고 생각하시면 됩니다. 올려주신 사진처럼 MVVM에서는 데이터 바인딩을 통해서 View만 ViewModel에 의존하고 ViewModel은 View에 의존하지 않습니다.

MVP의 Passive View에서는 뷰와 프레젠터가 서로 의존하며 View -> Presenter 방향으로 이벤트를 전달하고 Presenter -> View 방향으로 UI를 갱신하는 방식으로 동작했었죠?

그럼 MVVM에서는 뷰모델이 뷰를 모르는데 뷰모델에서 변경이 생겼을 때 UI에 변경된 값이 어떻게 반영이 되는가라는 문제를 해결해주는 것이 데이터 바인딩입니다. Passive View에서는 프레젠터가 프레젠터 안에서 수동적으로 뷰에 갱신하라는 명령을 내렸지만, MVVM에서는 뷰 안에 갱신작업을 bind 메서드를 통해 바인딩했으므로 뷰모델은 뷰를 몰라도 되는 것입니다. 데이터 바인딩의 방향 자체는 상황에 따라서 단일방향일수도 양방향일수도 있습니다.

image

UI가 UILabel처럼 읽기전용(Read Only)인 경우 UILabel이 뷰모델의 특정 프로퍼티의 변화만 추적하도록 OneWay 바인딩을 하면 될 것이고, 이벤트를 발생시키는 어떤 UI의 값과 뷰모델의 특정 프로퍼티를 항상 일치시키려면 TwoWay 바인딩을 하면 되겠죠? 그리고 UI에서 어떤 입력이 발생했을 때 그 입력을 뷰모델에 전달만 하면 된다면 OneWayToSource를 하면되겠죠?

물론 WPF와 다르게 애초에 UIKit에서는 데이터 바인딩을 지원해주지 않기 때문에 엄밀하게 용어를 구분해서 사용하지는 않는 것 같습니다. 그저 상황에 따라서 입력은 뷰모델이 처리하도록 위임하고(생성자를 통해서든, transform 같은 함수를 통해서든, 뷰모델이 소유한 input 같은 프로퍼티를 public으로 공개하든), 출력해야할 값을 bind 메서드로 특정 UI에 바인딩한다 이런 메커니즘으로 동작한다고 이해하시는게 편하지 않을까 생각합니다.

android crud중 c 영상이 12초만 있는 잘린 영상이에요.

0

17

2

수강 기간 연장 문의

0

33

1

수강연장부탁드려도될까요..

0

45

2

Combine Playground 에서 실행 시

0

62

2

70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문

0

48

1

ERP/MES 데스크톱 시스템 개발 시 WinForms vs WPF 선택 문의

0

96

3

searchable이 화면 하단에 위치해요

0

66

2

현재강의 완성된코드가있을까요?

0

63

1

Drawing Cycle 관련 질문

0

74

1

앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?

0

99

2

델리게이트 패턴 관련 질문

0

71

2

ios 애드몹 광고

0

140

2

수강 기간 연장 부탁드릴 수 있을까요?

0

69

1

6번 강좌 Program.cs 추가 필요

0

49

1

활용 앱 57강 질문입니다.

0

57

1

그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 합니다...ㅜㅜ

0

81

2

과거 ai없을때 듣고 다시 듣는 중인데

1

55

1

활용 앱 30강 에러 질문입니다

0

67

2

MVVM in iOS - 리액티브 프로그래밍, 자동바인딩과 수동바인딩에서 질문이있습니다

0

305

1

MVC의 본질에 대한 질문

0

377

1

MVVM 템플릿2 관련

0

469

1

강의자료같은게 따로 있나요 ??

0

477

1

제가 이해한게 맞는지 궁금합니다.

0

746

1

질문 드려요!

0

500

2