SwiftUI에서 @State와 ObservableObject 클래스

mystic·2023년 9월 1일
0
post-custom-banner

@State변수의 값을 비동기 구문 Task { } 안에서 변경하는 코드를 기존에 작성하였고 View의 크기가 점점 커져서 파일을 새로 만들고 View부분에서 역할을 나눠야 하는 부분을 새로 class로 만들어서 ObservableObject를 상속하여 @Published로 선언하여 사용하려고 하였는데 문제가 발생하였습니다.
원래는 잘 동작하던 애니메이션이 갑자기 제대로 동작하지 않았습니다.
이유를 찾아보니 정확하지는 않지만 제가 이해한 바로는 View에서 @State변수의 값을 변경하게 되면 SwiftUI는 View를 새로 그린다고 합니다. 이 동작은 아마 메인쓰레드에서 이뤄지는걸로 추측됩니다.
View에서 비동기함수를 사용하여서 비동기 동작이 끝났을때 메인뷰를 업데이트 하는 방식을 사용하고 있었는데 파일을 분리하게 되면서 메인쓰레드에서만 실행되도록 만든 ObservableObject 클래스와 충돌이 일어난것 같습니다.
그래서 생각한 방법은 @State변수도 같은 ObservableObject 클래스안에 넣어서 @Published형태로 선언하면 같은 쓰레드에서 같이 동작하니 괜찮아질거라고 생각하였고 결과적으로 잘 동작하였습니다.

profile
iOS를 좋아하는 학생
post-custom-banner

0개의 댓글