iOS환경에서 비동기 작업을 관리하는 두 가지 핵심 기술이 있는데요. GCD(Grand Central Dispatch)와 Swift Concurrency의 작업단위인 Task입니다.이들은 내부적으로 QoS(Quality of Service)라는 통일된 시스템을 사용하여 작업의 우선순위를 관리하는데요. 오늘은 이 QoS에 대해서 알아보겠습니다.1. Task와 GCD의 우선순위 연관 관계GCD와 Task 모두 QoS(Quality of Service)를 통해 시스템에 작업의 중요도를 알립니다. GCD의 DispatchQueue와 Swift Concurrency의 Task를 사용할때 시스템은 설정된 QoS 정보를 기반으로 스레드 풀에서 작업을 스케줄링하고, 필요한 CPU 및 리소스 할당을 결정합니다.비동기 작..
Swift Concurrency의 핵심: Structured Concurrency로 안전한 비동기 작업 제어하기Swift Concurrency를 활용하여 비동기 처리를 구현하고 계시다면, Structured Concurrency(구조화된 동시성) 형태로 작업을 구성하는 것이 강력하게 권장됩니다. 왜냐하면 이는 작업 간의 부모/자식 관계를 명시적으로 설정하여, 복잡한 비동기 작업을 예측 가능하고 유연하게 제어할 수 있게 하기 때문입니다.오늘은 이 원칙의 가장 큰 장점인 '취소(Cancellation) 전파' 기능을, 중첩된 Task 작업이 있는 상황을 가정해서 코드 작성해보며 실험해보겠습니다.playground 에서 emtpy project를 생성해서 swift concurrency 기반 코드 작성 및 테..
안녕하세요~ 개발자 멍구입니다. ✨저는 현업에서 개발을 하면서 비동기적으로 중복 호출을 방지하고, 예외처리 하는등의 다소 복잡한 로직을 구현해본적이 있는데요. 그렇게 자주 사용하지는 않다보니, 한번씩 리마인딩을 하지 않으면 얼마 안가서 까먹게 되더라고요... ㅠㅠ근데 사용할일이 생기면 굉장히 중요하고, 많은 테스트가 필요한 작업이다보니, 리마인딩의 필요성을 느꼈습니다.. 그래서 이 리마인딩 공부 겸... Swift Concurrency의 Task를 활용해서 Debouncer를 구현해봤습니다. 초기구현이라 부족한 점 많을 수 있으니, 감안해서 보고 많은 피드백 부탁드립니다! 근데 그전에... Debounce가 머임?debounce는 일정 시간 동안 특정 이벤트가 다수 발생했을때, 마지막 하나의 이벤트만 ..
안녕하세요. 개발자 멍구입니다! iOS 개발을 하다 보면 "동시성", "데이터 경쟁(data race)", "스레드 안전성" 같은 말들이 자주 들리죠? 처음 들으면 어렵게 느껴질 수 있지만, 오늘은 그런 개념들을 단번에 정리해주는 핵심 키워드 두 가지를 소개해드릴게요.바로 Actor와 Sendable입니다. 앱이 복잡해지고, 멀티태스킹이 많아질수록 중요해지는 이 개념들, 오늘 알아보겠습니다. Actor? 데이터 경합 문제를 깔끔하게 해결하는 방법먼저 Actor부터 볼게요."Actor는 일종의 안전한 방입니다." 여러 사람이 동시에 들어와서 방 안의 물건을 엉망으로 만들지 않도록, 한 명씩만 차례대로 들어와서 방 안의 상태를 변경할 수 있도록 해요.Swift에서 actor는 class처럼 참조 타입이지만,..
- Total
- Today
- Yesterday
- 알고리즘
- 자연어처리
- ios
- Protocol
- 스위프트
- 프로그래머스
- 부스트코스
- swift reduce
- 백준swift
- 프로토콜
- swift concurrency
- swift 문자열
- Swift 알고리즘
- 백준알고리즘
- swift
- createML
- uikit
- 컬렉션
- swift 기초
- swift문제
- 알고리즘문제
- 김프매매
- CoreML
- SwiftUI
- swift string
- 개발자문서
- swift알고리즘
- Collection
- 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 |