티스토리 뷰

최근에 샘플 프로젝트에 @MainActor 키워드가 있어서 한번 찾아보았다.

@MainActor는 메인 큐를 사용하는 글로벌 액터라고 한다. @MainActor로 마크된 메소드는 항상 메인큐에서 실행되기 때문이다. UI를 수정하기에 안전하다고 한다.

2개의 @Published를 가진 Observable Object를 생성할 수 있다. 둘 다 모두 값이 변경되면 UI 업데이트를 할 예정이기 때문에 UI 업데이트가 메인 엑터에서 일어나길 항상 보장하기 위해 전체 클래스를 @MainActor로 표시했다.

@MainActor
class AccountViewModel: ObservableObject {
    @Published var username = "Anonymous"
    @Published var isAuthenticated = false
}

잘 모르겠으면 @ObservableObject, @StateObject를 사용하기 위해선 클래스에 @MainActor를 추가하는 것이 좋다고 생각하면 될 것 같다. 어차피 SwiftUI에서 이를 사용하는 클래스는 값이 변경되면 UI를 업데이트해야 할 것이고, UI 업데이트는 메인 큐에서 해야 하기 때문이다.

참고 문서

최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday