안녕하세요. 오늘은 가볍게 SwiftUI의 View의 구현부에 명시되어있는 어떤 개념에 대해서 가볍게 보려고 해요. 바로 메인스레드에서의 동작을 보장시켜주는 MainActor에 대해서입니다. Swift Concurrency, MainActor의 개념과 사용방식, MainActor가 사용되는 케이스와 더불어 async await 메서드를 함께 사용하는 몇가지 케이스에서 메인스레드의 동작유무를 보도록 할게요. SwiftUI, View protocol에 정의되어있는 @MainActorView에 대한 구현부에요. 아래 body를 보시면, @MainActor가 정의되어있는데요. @MainActor가 정의되어있는 영역 내의 코드는 메인스레드에서의 동작을 보장해요. 다만 그 안에 부분적으로 DispatchQueue...
iOS Swift Concurrency, async await 방식의 이점과 사용 간에 생길 수 있는 고민 iOS13 부터 활용 가능한 async await, actor 등의 개념을 잘 활용하면 data racing 문제를 해결하고, 많은 thread의 생성을 야기할 수 있는 context switching을 최소화 할 수 있습니다. 또한, callback closure의 중첩으로 인한 콜벡지옥 등으로 인한 나쁜 가독성을 개선할 수도 있습니다. async await 을 사용할 때에는 일반적으로 함수 반환 타입 앞에 async, async throws를 사용하고, 호출할때에는 Task { ... }, .task { ... } 블럭 내에 await, try await 키워드와 함께 호출하여 사용하게 되는데요..
AsyncSequence protocol에 대해서 알아보자 오늘은 AsyncSequence protocol을 알아보겠습니다. AsyncSequence protocol은 기존 Iteration이 가능하게 해주는 Sequence 프로토콜에 Async 성격이 추가된 프로토콜입니다. AsyncSequence를 준수하는 애들은 for try await in loop, for await in loop 등을 사용할 수 있게 되고, iOS 13.0이상에서 사용이 가능합니다. 선언은 이렇게 되어있습니다. rethrows는 일반적으로 throws closure를 인자로 갖고 있는 메서드에서 사용되는데, @rethrows는 그거랑 관련된 rethrow가 가능한것을 의미하는 annotation일것 같아요. (혹시 이거 명확하..
- Total
- Today
- Yesterday
- 컬렉션
- 스위프트
- 백준알고리즘
- Collection
- swift
- swift 문자열
- 프로토콜
- CoreML
- 알고리즘문제
- Swift 알고리즘
- 자연어처리
- swift reduce
- 백준swift
- 프로그래머스swift
- 김프매매
- swift 기초
- Protocol
- 알고리즘
- SwiftUI
- swift문제
- 개발자문서
- swift언어
- 부스트코스
- createML
- ios
- uikit
- swift알고리즘
- publisher
- 프로그래머스
- swift string
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |