IOS
606. (ios/swift5) [간단 소스] DispatchWorkItem 간단 설명 및 사용 옵션 정리
투케이2K
2024. 12. 5. 21:01
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
![](https://blog.kakaocdn.net/dn/bEHo5b/btsK8UtjyhP/sMe1nquQWVrxjOSznoOtNk/img.png)
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Swift
- 개발 툴 : Xcode
- 기술 구분 : DispatchWorkItem / 작업 캡슐화 / 이벤트 핸들러
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------
1. DispatchWorkItem 은 작업 (task) 의 캡슐화를 수행할 수 있는 클래스로 작업 항목 이벤트 등록 , 취소 핸들러로 사용할 수 있습니다
2. DispatchWorkItem 사용 가능 지원 범위 :
>> iOS 8.0 이상
>> 아이패드OS 8.0 이상
>> 맥 카탈리스트 13.0+
>> 맥OS 10.10+
>> tvOS 9.0 이상
>> 비전OS 1.0+
>> 워치OS 2.0 이상
>> Xcode 6.0.1+
3. DispatchWorkItem 작업 항목 생성 관련 :
>> init(qos: DispatchQoS, flags: DispatchWorkItemFlags, block: () -> Void) : 기존 블록에서 새로운 디스패치 작업 항목을 만들고 지정된 서비스 품질 클래스를 할당합니다
4. DispatchWorkItem 작업 항목 실행 관련 :
>> func perform() : 현재 스레드에서 작업 항목의 블록을 동기적으로 실행합니다
5. DispatchWorkItem 완료 핸들러 추가 관련 :
>> func notify(queue: DispatchQueue, execute: DispatchWorkItem) : 현재 작업 항목이 완료된 후 지정된 작업 항목의 실행을 예약합니다.
>> func notify(qos: DispatchQoS, flags: DispatchWorkItemFlags, queue: DispatchQueue, execute: () -> Void) : 현재 작업 항목이 완료된 후, 지정된 서비스 품질로 지정된 작업 항목의 실행을 예약합니다.
6. DispatchWorkItem 작업 완료 기다리기 관련 :
>> func wait() : 호출자가 디스패치 작업 항목 실행이 완료될 때까지 동기적으로 대기하도록 합니다.
>> func wait(timeout: DispatchTime) -> DispatchTimeoutResult : 호출자가 디스패치 작업 항목 실행이 완료되거나 지정된 시간이 경과할 때까지 동기적으로 대기하도록 합니다.
>> func wait(wallTimeout: DispatchWallTime) -> DispatchTimeoutResult : 호출자가 디스패치 작업 항목 실행이 완료되거나 지정된 시간이 경과할 때까지 동기적으로 대기하도록 합니다.
>> struct DispatchTime : 기본 시계를 기준으로 한 시간 지점이며 나노초 단위의 정밀도를 갖습니다.
>> struct DispatchWallTime : 벽시계에 따른 절대적 시점이며 마이크로초 단위의 정밀도를 가집니다.
7. DispatchWorkItem 작업 항목 취소 관련 :
>> func cancel() : 현재 작업 항목을 비동기적으로 취소합니다.
>> var isCancelled: Bool : 작업 항목이 취소되었는지 여부를 나타내는 부울 값입니다.
8. DispatchWorkItem 초기화 관련 :
>> init(flags: DispatchWorkItemFlags, block: () -> Void)
9. DispatchWorkItem 사용 예시 소스 코드 :
let workItem = DispatchWorkItem {
print(" @@@@@@@@@@@@@ Work item executed @@@@@@@@@@@@@ ")
}
let delay = DispatchTime.now() + 5 // [5초 후에 실행]
DispatchQueue.main.asyncAfter(deadline: delay, execute: workItem)
// workItem.cancel() // [예정 된 작업 취소]
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
https://developer.apple.com/documentation/dispatch/dispatchworkitem
https://blog.naver.com/kkh0977/223576532319?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형