본문 바로가기
비동기와 반응형/Swift Concurrency (고수준 비동기 처리)

[Swift] Call to main actor-isolated instance method in a synchronous nonisolated context

by lody.park 2024. 8. 4.

Swift 6에서는 Swift Concurrency 모델을 강화하여, MainActor에 의해 격리된 인스턴스 메서드비격리 Context에서 호출할 수 없음.
Swift의 Concurrency 모델에서 "격리"는 영어로 "isolation"이라고 합니다.
Swift에서는 데이터 race를 방지하고 안전한 동시성 프로그래밍을 가능하게 하기 위해 "actor-isolated"라는 개념을 도입했습니다. "actor-isolated"는 특정 액터(Actor) 또는 메인 액터(MainActor)에 의해 격리된다는 의미입니다. 이 격리는 액터가 자신이 소유한 상태(state)에 대한 접근을 제어하도록 합니다.

 

이 문제를 해결하려면 아래와 같이 @MainActor 속성을 사용하여 함수나 메서드를 MainActor에 의해 격리된 Context에서 호출되도록 해야함.