반응형
swiftui 에서 async 콘텍스트에서 UI 와 관련된 변수를 업데이트할 때 발생한다. xcode에서 보라색으로 나타나는 워닝이다.
UI 관련 변수를 업데이트할 때에는 main 쓰레드에서 업데이트 될 수 있도록, await MainActor.run { } 블록으로 감싸주어야 한다. 이 방법은 이전에 사용하던 DispatchQueue.main 을 대체하는 방식이다.
이 방법도 가능하지만, 더 아름다운 방식은, @MainActor 어노테이션을 사용하는 것. 해당 변수를 업데이트하는 코드가 들어있는 함수 선언에 어노테이션을 더해준다. @MainActor func uiUpdateFunc()
- ref : Modern Concurrency in Swift Chapter 1, 2
728x90
'프로그래밍 > SWIFT' 카테고리의 다른 글
SWIFT 기초] 배열 슬라이싱 python과 swift 비교 (0) | 2023.03.02 |
---|---|
[SwiftUI] @State, struct, class (0) | 2022.12.19 |
[SWIFT] dump() 함수 출력을 문자열로 바꾸는 방법 (0) | 2022.10.15 |
[XPC] 새로운 타겟에서 xpc service 사용하기 Error Domain=NSCocoaErrorDomain Code=4099 (0) | 2022.09.08 |
[Swift|번역] Process waitUntilExit 은 비동기 completion handler 와 같이 쓰지 않는다. (0) | 2022.08.09 |