반응형

쓰레드 3

[iOS, Swift] RunLoop 사용하기

iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다. RunLoop은 iOS 애플리케이션에서 이벤트 처리를 위한 핵심 메커니즘 중 하나입니다. 이 메커니즘은 쓰레드를 대기 상태로 만들거나, 타이머를 실행하거나, 입출력 이벤트를 처리하는 데 사용됩니다. RunLoop은 앱의 UI 쓰레드를 유지하면서 동시에 다른 쓰레드에서 작업을 처리할 수 있도록 해줍니다. UI 쓰레드에서 사용자 입력을 처리하면서 백그라운드 쓰레드에서 네트워크 작업을 처리할 수 있습니다. RunLoop은 기본적으로 이벤트 루프로 구성되어 있으며, 이벤트가 발생할 때까지 대기합니다. 이벤트가 발생하면 해당 이벤트를 처리하고 다시 대기 상태로 돌아갑니다. RunLoop 클래스를 사용하여 이벤트 루프를 만들..

iOS/코드조각 2023.03.15

[iOS, Swift] 메인 쓰레드 글로벌 쓰레드 생각

최근 프로젝트를 진행하며, 어렵게 느껴진 부분이 있다 쓰레드를 다루고 비동기처리를 순서대로 정렬하고 Thread-safe 하게끔 코드가 동작하게 하는 것이다. Swift에서는 UI 화면을 업데이트를 하려면 메인 쓰레드에서만 가능하다. 그런데 메인 쓰레드에서 UI업데이트도 하고, 영상 추출 및 병합도 또한 진행하려고 하니 진행도를 표시하는 UI가 변하지 않는 부분에서 애를 먹었다. 애플에서는 AVFoundation에서 영상을 다루는 데, 영상을 추출하는 부분은 비동기 함수로 제공한다. 그동안 동기적, 순서대로 작동하게끔 코드를 구성하는 게 익숙해진 나에게 비동기적으로 로직이 작동하는 부분에서 굉장히 헷갈렸다. 지금도 또한 코드가 비동기적으로 진행할 때에 어떻게하면 Thread-safe하게 구성하게 할 지가..

iOS/강의, 고찰 2022.11.16
반응형