SwiftUI + @Observable 을 통해서 MVI를 더 간편하게(1탄)
이 글은 이전 글의 연속입니다. 먼저 읽고 오시길 추천합니다.
그러니까 @Observable
과 ObservableObject
는 어떤 차이가 있어서 MVI에서 Container
를 걷어낼 수 있었던 걸까?
@Observable
과 ObservableObject
모두 내부 코드를 볼 수 있다면 바로 이해할 수 있겠지만,
현재는 접근이 어렵기에 여기서는 유추 기반으로 정리한다.
우리는 함수명을 통해 몇 가지를 유추할 수 있다.
ObservableObject
를 채택하면, @Published
(propertyWrapper)를 통해 선언된 객체가 값이 변할 때 무언가가 작동한다고 예상할 수 있다.
아마도 wrappedValue
가 set
될 때 objectWillChange
를 호출하는 구조가 아닐까?
objectWillChange
는 값을 방출하지 않는다.
그저 “객체가 변했다”는 신호만 보내는 Publisher다.
즉, 어떤 Publisher
가 objectWillChange
를 트리거했는지는 알 수 없다.
그래서 View 입장에선 멍청비용(?)을 지불할 수밖에 없다.
즉, body 전체를 다시 그리는 구조다.