AsyncStream structure 정의 swift 5.5 부터 소개된 Swift Conrreucy의 개념으로 AsyncStream이 있습니다. iOS13부터 지원을 하고 있습니다. AsyncStream은 클로저를 통해 생성된 비동기 시퀀스를 정의합니다. AsyncStream을 통해 제공되는 closure 내에서 continuation을 통해 다수의 새로운 값을 생산하고, 이를 async 하게 처리할 수 있습니다. AsyncStream은 구조체로 정의되어 있으며, Element라는 제네릭 타입을 갖고 있습니다. Overview AsyncStream은 기본적으로 AsyncSequence를 준수하고 있습니다. AsyncSequence를 준수하기 위해서는 몇가지 사항을 준수해야하는데, 이를 수동적으로 준수..
스레드의 동시 접근으로 생기는 문제점인 Data Races 문제를 해결하기 위해서 사용할 수 있는 프로토콜이 있습니다. Swift Concurrency 관련해서 생긴 새로운 타입인 Actor도 이 protocol을 채택하고 있는데요. 오늘은 Sendable protocol 문서를 읽어보고자 합니다. Sendable protocol의 요약 설명을 보면, 복사에 의해 Concurrency 도메인 간에 값을 안전하게 전달할 수 있도록 한다고 하는데, 문서를 보도록 하겠습니다. 동시성 문제를 해결하는 Actor와 Sendable protocol의 관계 하나의 스레드에서 동시 접근을 해버리면 예기치못한 동작을 야기할 수 있습니다. 대표적인 예사가 은행송금 문제입니다. 만약에 잔고가 100만원이 있는데, 동시에 ..
안녕하세요. 오늘은 가볍게 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 키워드와 함께 호출하여 사용하게 되는데요..
- Total
- Today
- Yesterday
- 프로토콜
- 개발자문서
- swift
- swift string
- 알고리즘문제
- swift알고리즘
- uikit
- createML
- 김프매매
- swift언어
- 백준알고리즘
- SwiftUI
- CoreML
- swift문제
- swift 문자열
- 스위프트
- ios
- 부스트코스
- 자연어처리
- Collection
- 알고리즘
- publisher
- Protocol
- Swift 알고리즘
- swift reduce
- 프로그래머스
- 프로그래머스swift
- 컬렉션
- swift 기초
- 백준swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |