본문 바로가기

async

(3)
[CS193p] GCD를 async/await로 변경하기 CS193p 강의의 lec 9, 10에서 GCD를 사용한 것을 new async await로 변경해보겠습니다. 먼저 강의에서 언급한 Swift's new built-in async API는 async/await를 지칭하는 것 같습니다. 2021 WWDC - Meet async/await in Swift javascript의 async/await 구조와 매우 비슷합니다. nest return 코드가 사라져서 가독성이 향상되었습니다. 기존 코드는 다음과 같습니다. private func fetchBackgroundImageDataIfNecessary() { backgroundImage = nil switch emojiArt.background { case .url(let url): // fetch the u..
[iOS, concurrency] publishing changes from background threads is not allowed; Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates. Background queue에서 UI 관련된 작업을 수행하면 다음 문구가 Xcode에 보라색으로 발생합니다. 해당 알람은 런타임에서 확인할 수 있습니다. Main queue에서 실행할 수 있도록 변경해주면 됩니다. 해결방법 다음과 같이main queue에서 async로 동작하도록 했습니다. DispatchQueue.main.async { [weak self] in self?.myText = "blah blah" } 왜 w..
[iOS] GCD, multithreading in iOS 2021 CS193P 강의를 참고하여 작성되었습니다. Threads 하나의 실행 단위입니다. 프로그램 내에서 실행되는 것이 있을 텐데, 그 실행되는 것 하나하나가 모두 스레드입니다. iOS에서 실행되는 스레드는 계속 변경됩니다. 실행되는 스레드 간의 변경이 아주 빠르게 처리해서, 사용자에게는 여러 작업이 동시에 일어나는 것처럼 보이도록 합니다. 아이폰에서 유튜브를 보면서 카카오톡 알림이 오는 것도 다른 스레드들이 계속 스위칭되면서 진행되는 것입니다. 스레드마다 우선 실행권한을 가질 수 있다. Queues 쓰레드는 시간적 개념이 들어가 있기 때문에 코드로 작성해서 이해하는 것이 어렵습니다. Swift에서는 이것을 큐들을 이용해서 해결했습니다. 큐는 실행할 스레드를 순서대로 줄 세워서 처리하게 만듭니다. 개..