inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지

MVVM 아키텍처 설명 4 (MVVM이론과 코드) (업데이트-6강)

뷰모델의 상태변화 와 didSet

98

밀라이

작성한 질문수 9

0

class MusicViewModel {

  var music: Music? {
    didSet {
      onCompleted() // 시점을 알려줌 
    }
  }

  var onCompleted: () -> () = {  }
}

class ViewController: UIViewController {

  var viewModel =  MusicViewModel()

    override func viewDidLoad() {
        super.viewDidLoad()
      viewModel.onCompleted = {
        self.configureUI()
      }
      // 뷰모델에서 클로저를 호출하면 이부분이 호출됨 
    }

안녕하세요 앨런님!

궁금한게 있어서 질문 남기게 되었습니다.

섹션 뒤쪽에 MVVM 강의에서 뷰모델의 상태변화를 코드를 보면,

뷰모델에서 데이터에 상태변화가 생기면 didSet을 통해 onComplete() 시점을 알려주고, 뷰컨트롤러에서는 해당 onComplete에 ui업데이트를 하는 함수를 실행코드를 넣어주게됩니다!

 

이렇게 didSet과 클로저를 통해서 뷰모델과 뷰컨에서의 ui 업데이트를 하는 코드가 현업에서도 많이 사용하는지 궁금합니다!

이 방법외에도 Combine을 사용해도 되는건지도 궁금합니다!

 

 

항상 친절하게 답변 남겨주셔서 너무 감사합니다 :)새해복 많이 받으세요 🧧

 

ios swift

답변 1

0

앨런(Allen)

안녕하세요 밀라이 님.

아 네, 현업에서는 거의 안쓰긴 하죠!
왜냐면.. 말씀하신 것처럼.. 보통 이런 종류의 데이터 바인딩은 Combine이나 RxSwift를 쓰니까요.

따라서 Combine /RxSwift의 반응형 프로그래밍 개념을.. 더 직관적으로 이해하기 위해서.. 어떤 개념들에서 시작하게 되었는지를 명확하게 아시는 것이 중요하니.. 개념 이해 측면에서 설명드린 것이라고 보시면 될 것 같아요!

고맙습니다. :)

0

밀라이

늦은시간인데도 빠르게 답변해주셔서 감사합니다 🙂 !!

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

0

36

2

Drawing Cycle 관련 질문

0

70

1

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

0

94

2

델리게이트 패턴 관련 질문

0

64

2

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

0

60

1

활용 앱 57강 질문입니다.

0

54

1

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

0

63

2

기초앱 17강 Contraints 설정 질문입니다.

0

65

2

기초 앱 4강 Type Any -> UIButton

0

65

2

34강 유용한 앱 추천에 나오는 UIKitViewer에 대해서 질문이 있습니다

0

76

1

깃에 코드는 올려도 된다고 하셨는데

0

108

1

수강기간 연장신청 드려도 될까요?

0

82

1

수강 기간 연장 부탁드려도 될까요?

0

120

2

수강 기간 연장 신청 요청드립니다.

0

131

2

playground에서 상단 실행?아이콘 회전 관련하여...

0

136

1

활용앱53강에서 질문있습니다.

0

164

2

Project 명칭 변경방법이 궁금합니다.

0

140

1

override 에 대해서 궁금한 것이 있습니다.

0

123

2

섹션8] 코드 리팩토링 문의

0

99

1

xcode 에서 ios 버전 선택 및 시뮬레이터 관련 질문

0

558

2

수강 기간 연장 부탁드려도 될까요?

0

130

2

@Sendable 키워드

0

92

1

클로저

0

103

2

ThreadSafe하지 않을때 해경 방법

0

106

1