본문 바로가기

비동기와 반응형/Swift Concurrency (고수준 비동기 처리)3

비동기 작업 cancel 꼬꼬무해보기 (with LLDB 디버깅) 오늘은 ViewModel 등에서 Swift Concurrency Task의 라이프 사이클을 관리하면서 겪은 트러블 슈팅, 그리고 그 과정에서 공부한 내용을 정리해보려고 한다. Combine, Rxswift 두 반응형 프레임워크는 이벤트 스트림을 비동기적으로 처리할 수 있도록 해준다.그리고 일반적으로 ViewModel등에서 스트림 이벤트를 처리할때 ViewModel의 메모리에서 해제되는 시점에 스트림을 즉 작업을 취소(cancel)할 수 있게, 이벤트(또는 작업)들을 보관하고 관리할 수 있는 disposeBag 또는 cancellableBag 을 만들어 사용한다. 그렇다면 Swift Concurrency의 Task는 어떨까?Swift 공식문서를 보면 Task 또한 취소가 가능하게 cancel을 제공한다고 .. 2024. 10. 5.
[WWDC21] Meet async/await in Swift WWDC21 : Meet async/await in Swift 세션을 그대로 번역한 내용입니다. Swift는 이제 비동기 함수를 지원합니다. 이 패턴은 흔히 async/await로 알려져 있습니다. 새로운 문법이 어떻게 코드를 더 읽기 쉽고 이해하기 쉽게 만들어주는지 알아보세요. 함수가 일시 중단(suspend)될 때 무엇이 일어나는지, 그리고 기존의 완료 핸들러(completion handler)를 비동기 함수로 어떻게 변환할 수 있는지도 배워보세요. 안녕하세요, 저는 Apple의 Swift 팀 엔지니어 Nate입니다. 오늘 제 동료 Robert와 함께 Swift의 async/await에 대해 설명드리겠습니다.비동기 프로그래밍은 여러분 중 많은 분들이 정기적으로 수행하는 작업일 것입니다. 비동기 코드는.. 2024. 8. 17.
[Swift] Call to main actor-isolated instance method in a synchronous nonisolated context Swift 6에서는 Swift Concurrency 모델을 강화하여, MainActor에 의해 격리된 인스턴스 메서드를 비격리 Context에서 호출할 수 없음.Swift의 Concurrency 모델에서 "격리"는 영어로 "isolation"이라고 합니다. Swift에서는 데이터 race를 방지하고 안전한 동시성 프로그래밍을 가능하게 하기 위해 "actor-isolated"라는 개념을 도입했습니다. "actor-isolated"는 특정 액터(Actor) 또는 메인 액터(MainActor)에 의해 격리된다는 의미입니다. 이 격리는 액터가 자신이 소유한 상태(state)에 대한 접근을 제어하도록 합니다. 이 문제를 해결하려면 아래와 같이 @MainActor 속성을 사용하여 함수나 메서드를 MainActor에.. 2024. 8. 4.