SwiftUI + @Observable 을 통해서 MVI를 더 간편하게(1탄)

이 글은 이전 글의 연속입니다. 먼저 읽고 오시길 추천합니다.


도입

그러니까 @ObservableObservableObject는 어떤 차이가 있어서 MVI에서 Container를 걷어낼 수 있었던 걸까?

@ObservableObservableObject 모두 내부 코드를 볼 수 있다면 바로 이해할 수 있겠지만,

현재는 접근이 어렵기에 여기서는 유추 기반으로 정리한다.


ObservableObject

우리는 함수명을 통해 몇 가지를 유추할 수 있다.

ObservableObject를 채택하면, @Published(propertyWrapper)를 통해 선언된 객체가 값이 변할 때 무언가가 작동한다고 예상할 수 있다.

아마도 wrappedValueset 될 때 objectWillChange를 호출하는 구조가 아닐까?

그럼 objectWillChange는 뭘 방출할까?

objectWillChange값을 방출하지 않는다.

그저 “객체가 변했다”는 신호만 보내는 Publisher다.

즉, 어떤 PublisherobjectWillChange를 트리거했는지는 알 수 없다.

그래서 View 입장에선 멍청비용(?)을 지불할 수밖에 없다.

즉, body 전체를 다시 그리는 구조다.

예제 코드