Lecture 4: Memorize Game Logic

sun·2021년 10월 3일
1

강의 링크

# MVVM 흐름

  • 데이터와 로직을 담은 Model 은 독립적으로 존재하는데, 이를 viewModelView 와 연결해줌으로써 View 는 모델의 현재 상태를 디스플레이한다

  • viewModel 에는 사용자의 의도를 보여주는 함수들이 있는데, 사용자가 인터페이스와 특정한 의도를 갖고 상호작용하면 ViewviewModel 에게 사용자 의도를 반영하라고 요구하고, viewModelModel 이 의도에 따라 상태를 변화시킬 수 있도록 해당 상황에 맞는 intent function 을 호출한다. 의도가 반영되어 Model 이 바뀌면 viewModel 은 이를 감지해 변화가 생겼음을 publish 하고 이를 확인한 View 는 그때마다 body 를 다시 빌드해 인터페이스를 갱신한다!

viewModelModel 의 변화를 감지할 수 있는 이유는 swift 는 구조체에 변화가 생길 때 이를 감지할 수 있는데 Model구조체이기 때문!


# :ObservableObject, @Published @ObservedObject

ObservableObject 프로토콜과 @Published

  • 해당 프로토콜을 따르게 함으로써 ViewModel 이 세상에 Model 이 바뀌었음을 publish 할 수 있도록 한다

  • 해당 프로토콜에 순응하는 경우 자동으로 objectWillChange 프로퍼티를 갖게 되는 데 여기에 send 메서드 를 이용해 publish 한다

  • 혹은 Model 앞에 @Published 래퍼를 선언해 publish 할 수 있다

class EmojiMemoryGame: ObservableObject {
    ...
    
    @Published private var model = createMemoryGame()
    
    ...
}

@ObservedObject

  • viewModel 이 변화를 publish 하면 View 로 하여금 body 전체를 다시 빌드하도록 하는 역할을 담당
struct ContentView: View {
    @ObservedObject var viewModel: EmojiMemoryGame
    
    var body: some View {
        ...
    }
}

☀️ TIL

  • 이제 MVVM 이 어떤 흐름으로 작동하는지는 얼추 알 것 같다...이번주 과제까지 하면 좀 더 잘 이해할 수 있을 것 같다...제발!
profile
☀️

0개의 댓글

관련 채용 정보