[swift] dispatch_async() 비동기로 실행 시키기
2024. 8. 7. 15:03ㆍ개발/iOS
1. dispatch_async란 무엇인가?
dispatch_async는 Grand Central Dispatch(GCD)에서 제공하는 비동기 함수로, 작업을 지정된 큐에 비동기적으로 제출합니다.
* 비동기 프로그래밍: 비동기 프로그래밍은 작업이 완료될 때까지 기다리지 않고 다른 작업을 계속 진행할 수 있도록 해줍니다. 이를 통해 앱의 성능과 반응성을 개선할 수 있습니다.
2. dispatch_async를 사용하는 이유
- 메인 스레드와 백그라운드 스레드: UI 업데이트는 메인 스레드에서 수행되어야 하며, 시간이 많이 걸리는 작업은 백그라운드 스레드에서 처리해야 합니다. dispatch_async를 사용하면 이 작업을 쉽게 관리할 수 있습니다.
- 비동기 작업 처리: 네트워크 요청, 파일 I/O, 데이터베이스 쿼리 등 시간이 오래 걸리는 작업을 비동기적으로 처리하여 앱이 중단되지 않도록 합니다.
- 성능 향상: 앱의 성능과 사용자 경험을 개선합니다. 메인 스레드가 항상 반응성을 유지할 수 있도록 합니다.
3. dispatch_async 사용 방법
- Dispatch Queue: 작업을 제출할 큐를 생성합니다. 주로 사용하는 큐는 메인 큐(Main Queue)와 글로벌 큐(Global Queue)입니다.
* 메인 큐: UI 업데이트를 위한 큐
* 글로벌 큐: 백그라운드 작업을 위한 큐
4. dispatch_async 사용 예시
4-1. UI 업데이트: 메인 스레드에서 수행되어야 하는 작업
DispatchQueue.main.async {
// 메인 스레드에서 UI 업데이트
self.label.text = "Hello, sod-d tistory!"
}
4-2.백그라운드 작업: 시간이 많이 걸리는 작업
DispatchQueue.global(qos: .background).async {
// 백그라운드에서 긴 작업 수행
let result = performLongTask()
DispatchQueue.main.async {
// 메인 스레드에서 결과 처리
self.label.text = result
}
}
4-3.사용자 정의 큐 : 시간이 많이 걸리는 작업
let customQueue = DispatchQueue(label: "com.sod_d.customQueue")
customQueue.async {
// 사용자 정의 큐에서 작업 수행
let result = performCustomTask()
DispatchQueue.main.async {
// 메인 스레드에서 결과 처리
self.label.text = result
}
}
5. 결론
- 비동기 프로그래밍의 중요성: dispatch_async를 사용하면 앱의 반응성을 유지하면서 동시에 복잡한 작업을 효율적으로 처리할 수 있습니다.
- 실제 사용 사례: 네트워크 요청, 파일 I/O, 데이터베이스 처리 등 다양한 상황에서 dispatch_async를 활용할 수 있습니다.
- 적절한 큐 선택: 메인 큐와 글로벌 큐를 적절히 사용하여 작업을 분배하고, 필요에 따라 사용자 정의 큐를 만들어 사용할 수 있습니다.
'개발 > iOS' 카테고리의 다른 글
[Swift] Concurrency와 Async/Await (0) | 2024.08.23 |
---|---|
[iOS] 심볼릭 링크(Symlink)란? (0) | 2024.08.22 |
[Objective-c] string JSON to JSON 으로 변경하기 (0) | 2024.05.09 |
[Objective-c] How Convert int to String ? (0) | 2024.05.09 |
[XCode] 프로젝트 무한로딩 오류 (0) | 2024.04.16 |