Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- HIG
- 리펙토링
- collectionview
- Protocol
- SWIFT
- UITextView
- 리팩토링
- combine
- ribs
- 스위프트
- UICollectionView
- uiscrollview
- rxswift
- RxCocoa
- 클린 코드
- ios
- MVVM
- tableView
- swiftUI
- Observable
- swift documentation
- uitableview
- clean architecture
- Human interface guide
- 애니메이션
- Refactoring
- map
- Clean Code
- 리펙터링
- Xcode
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 1. Async, Await 간단 사용 정리 (Concurrency) - 사용 방법 (async, await, Task) 본문
iOS 응용 (swift)
[iOS - swift] 1. Async, Await 간단 사용 정리 (Concurrency) - 사용 방법 (async, await, Task)
jake-kim 2023. 10. 3. 01:131. Async, Await 간단 사용 정리 (Concurrency) - 사용 방법
2. Async, Await 간단 사용 정리 (Concurrency) - 동시 처리
* 해당 글에서는 간단한 사용법만 살펴보기 때문에, 개념적인 부분은 이전 포스팅 글 참고
Async, Await 기초 사용 방법
ex) Async, Await를 사용하여 url을 가지고 특정 이미지 불러오기
- 정의부분
- 함수 리턴 화살표 키워드 "->" 왼쪽에 async 를 붙임
- 다른 비동기 함수를 호출할 때 await를 붙여서, completion 클로저가 아닌 그냥 일반 코드 작성하듯이 구현
func loadImage(url: URL) async throws -> UIImage {
let (data, _) = try await URLSession.shared.data(from: url)
if let image = UIImage(data: data) {
return image
} else {
throw NSError(domain: "ImageErrorDomain", code: -1, userInfo: [NSLocalizedDescriptionKey: "Failed to load image"])
}
}
- 사용부분
- async함수는 위에서 정의된 것처럼 async함수 안에서 불러야 하지만 Task그룹으로 감싸면 현재 함수가 async 키워드가 붙여있지 않아도 사용이 가능
- async 함수를 사용할때는 단순히 await 키워드를 붙여서 사용
// viewDidLoad는 async 키워드가 붙여있지 않지만 Task로 감싸서 다른 async 함수 호출이 가능
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let imageUrlString = "https://images.dog.ceo/breeds/australian-shepherd/pepper.jpg"
guard let url = URL(string: imageUrlString) else { return }
Task {
let image = try await loadImage(url: url)
}
}
}
- 만약 Task를 사용하지 않으면 async 키워드를 붙이라는 컴파일 에러가 발생\
* 전체 코드: https://github.com/JK0369/ExAsyncAwait_1
* 참고
'iOS 응용 (swift)' 카테고리의 다른 글
Comments