반응형
iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다.
RunLoop은 iOS 애플리케이션에서 이벤트 처리를 위한 핵심 메커니즘 중 하나입니다. 이 메커니즘은 쓰레드를 대기 상태로 만들거나, 타이머를 실행하거나, 입출력 이벤트를 처리하는 데 사용됩니다.
RunLoop은 앱의 UI 쓰레드를 유지하면서 동시에 다른 쓰레드에서 작업을 처리할 수 있도록 해줍니다. UI 쓰레드에서 사용자 입력을 처리하면서 백그라운드 쓰레드에서 네트워크 작업을 처리할 수 있습니다.
RunLoop은 기본적으로 이벤트 루프로 구성되어 있으며, 이벤트가 발생할 때까지 대기합니다. 이벤트가 발생하면 해당 이벤트를 처리하고 다시 대기 상태로 돌아갑니다. RunLoop 클래스를 사용하여 이벤트 루프를 만들 수 있으며, 이 클래스는 iOS 애플리케이션에서 기본적으로 사용되는 클래스 중 하나입니다.
RunLoop을 활용하는 방법 중 하나는 타이머를 사용하는 것입니다. 타이머를 사용하여 주기적으로 코드를 실행하거나 지정된 시간에 코드를 실행할 수 있습니다. 또한, RunLoop를 사용하여 백그라운드 쓰레드에서 실행되는 작업을 앱의 UI 쓰레드에서 처리할 수 있습니다.
var isFinish = false
export.exportAsynchronously {
isFinish = true
completion()
}
while !isFinish {
RunLoop.current.run(mode: .default, before: Date.distantFuture)
}
백그라운드 쓰레드에서 돌아갈 때는 버튼 클릭이나 이벤트가 실행되지 않을 수 있다.
이럴 때 RunLoop를 사용하면 된다.
반응형
'iOS > 코드조각' 카테고리의 다른 글
[iOS, Swift] UILabel 여러 줄 표현하기 (0) | 2023.03.18 |
---|---|
[iOS, Swift] UILabel 밑줄 추가하기 (0) | 2023.03.17 |
[iOS, Swift] 코드로 뷰 작성하기(UIKit, Constraint) (0) | 2023.03.14 |
[iOS, Swift] 네비게이션바 아이템 숨기기 (0) | 2023.03.11 |
[iOS, Swift] TableView에 모든 셀 가져오기 (0) | 2023.03.10 |