[Swift] Swift Concurrency(1) - 동시성오늘은 Swift Concurrency에 대해 본격적으로 알아보기 전,동시성 문제가 왜 발생하고 어떤 문제가 발생하는지 먼저 파악해보고자 한다! (제가 공부하기 위해 작성한 것이므로 틀린 정보가 있다면 알yanni13.tistory.com 이전 포스팅에서는 Swift Concurrency의 기본 개념이 되는 동시성에 대해서 다뤄보았다. 오늘은 Swift Concurrency가 어떤 문제를 해결하고자 했는지에 대해서 조금 더 깊게 다뤄보고자 한다.그 근간이 되는 GCD도 같이 살펴보고 , Swift Concurrency의 종류와 GCD는 어떤 차이점을 가지고 있는지 다뤄보고자 한다.(제가 공부하기 위해 작성한 것이므로 틀린 정보가 있다면 알려주세..
오늘은 Swift Concurrency에 대해 본격적으로 알아보기 전,동시성 문제가 왜 발생하고 어떤 문제가 발생하는지 먼저 파악해보고자 한다! (제가 공부하기 위해 작성한 것이므로 틀린 정보가 있다면 알려주세요!) ✏️ 동시성이란?여러 작업을 논리적으로 동시에 실행하는 것처럼 보이게 하는 것 동시성이란 실제로 짧은 시간 간격으로 작업 간 전환하며 실행되어 여러 작업을 논리적으로 동시에 실행하는 것처럼 보이게 만드는 것이다. 병렬성은 물리적으로 동시에 여러 작업을 수행하는 건데 동시성은 컨텍스트 스위칭을 통해서 처리되기 때문에 하나의 물리적 스레드에서도 여러 스레드가 작업하고 있는 것처럼 보인다. iOS에서는 동시성을 크게 GCD의 DispatchQueue와 Swift Concurrency의 asyn..
라이브러리를 배포하기 위해 기존 앱 프로젝트의 코드를 Swift Package로 옮긴 뒤 빌드했을 때 컴파일 에러가 발생하였다. 컴파일러가 두 가지 제안을 줬는데 MainActor를 호출하던가 nonisolated 키워드를 사용하라고 제시했다. 하지만 AVFoundation과 같이 카메라나 미디어 처리는 주로 백그라운드에서 작업되는 것이라고 알고 있는데 MainActor를 호출하는 게 맞는 건가? 싶다가 nonisolated를 사용해보고자 하였다. 따라서 오늘은 swift Concurrency의 일부인 nonisolated 키워드에 대해서 알아보겠다!nonisolated와 nonisolated(unsafe)는 어떤 점이 다른지, 어떤 원리로 실행되는지 궁금해서 공부해보고자 한다.(제가 공부하기 위해 ..
지난 블로그에서 Task의 개념, Task 취소, Task가 다른 비동기 작업이랑은어떻게 다른 건지에 대해서 살펴봤다. [swift] Swift Concurrency - Task (1)Swift Concurrency는 Swift 자체에서 비동기와 동기 처리를 더 안전하게 하고 간결하게 만들기 위한 기능이며 swift 5.5부터 도입되었다고 한다. async/await, Actor, @sendable등 여러 가지가 있지만 그중에서 오yanni13.tistory.com 오늘은 Task - 2탄으로 Task의 종류에 대해서 알아보도록 하자! ✏️ Task의 종류 Async-let동시 실행을 예약해두고 필요한 시점에서 기다리는 방식 기존방식의 binding 기존 방식에서 let result가 실행되기 전..
Swift Concurrency는 Swift 자체에서 비동기와 동기 처리를 더 안전하게 하고 간결하게 만들기 위한 기능이며 swift 5.5부터 도입되었다고 한다. async/await, Actor, @sendable등 여러 가지가 있지만 그중에서 오늘 공부해 볼 주제는 바로 Task이다! Task Task는 Concurrency에서 비동기 작업의 최소 단위라고 한다. 모든 비동기 코드는 어떤 작업의 일부로 실행되곤 하는데, Task는 한 번에 하나의 작업만 수행하지만, 여러 작업을 실행할 때 동시에 수행하기 위해 Task를 스케줄링할 수 있다고 한다. 하나하나 뜯어보자. 1. Task는 한 번에 하나의 작업만 수행한다. [순차] 보통 비동기는 한번에 하나의 작업만 수행하곤 한다. 그래서 하나의 Ta..
버그는 반드시 수정해야 한다. 그중에서도 재현하기 어려운 버그는 쉽게 손을 댈 수도 없다. 이때 로그를 사용하면 재현하지 않고도 버그의 흐름을 파악할 수 있도록 한다. 그래서 Swift의 통합 로깅 API인 Logger에 대해서 알아보도록 하자. 📚 Logger란? Swift에서의 Logger는 구조화된 로깅 api의 일부이며 Swift의 concurrency 및 디버깅과 잘 통합되도록 설계된 로깅 시스템이다. Logger는 os 프레임워크 기반으로 만들어졌으며 os 프레임워크 기능을 더 swift하게 사용할 수 있도록 추상화된 형태로 iOS 14.0부터 도입되었다.공식문서를 살펴보면 apple에서는 디버깅을 할 때 print보다 Logger를 권장하고있다. 기본적으로 성능적인 측면에서 Logger가..
iOS로 개발을 어느 정도 해보았다면 DispatchQueue에 대해서 잘 알고 있을 것이다. @MainActor이랑 DispatchQueue모두 메인 스레드에서 작업을 하도록 하는 건데, 둘의 개념을 간단하게 살펴보고 차이를 알아보고자 한다. 📚 들어가기 전iOS에서는 UI 관련 이벤트나, 주요 작업이 항상 메인 스레드에서 실행되어야 한다. 왜냐하면 UIKit이나 SwiftUI가 싱글스레드 환경에서 작동하도록 설계되었기 때문이다! 그럼에도 불구하고 여러 스레드에서 UI관련 이벤트들을 실행했을 땐 싱글 스레드 환경이 아닌 멀티 스레드 환경에서 동시에 접속을 하는 것이기 때문에 데이터가 충돌하여 제대로 된 데이터가 표시되지 않거나, UI가 깨져 원하는 UI가 표시되지 않을 수도 있다. 따라서 어떤 작..
네트워크 요청이나, 비동기 작업할 때 아래와 같은 코드를 본 적이 있을 것이다 func deleteUserProfile(completion: @escaping (Result) -> Void) -> Void 실제로 엄청 많이 사용되기도 하고, 자주 사용되는 만큼 개념을 잘 알고 사용해야 한다 따라서 @escaping 클로저가 무엇인지에 대해 알아보자! 📚 들어가기 전escaping closure를 알기 위해선 클로저에 대해서 기본적으로 알고 있어야 한다! 클로저를 다루면서 escaping closure 클로저에 대해 아주 간략하게 포스팅을 해놨었는데 한번 읽어보고 지금 포스팅을 읽으면 더 이해하기 쉬울 것이다. [iOS/Swift] Closure이전 포스팅에서는 life cycle에 대해서 알아보았는..
- Total
- Today
- Yesterday
- ios
- group tasks
- GCD
- UITest
- foundation models
- combine
- CoreData
- awakeFromNib
- swiftUI
- UIKit
- internal Combine
- 클로저
- Fastlane
- asyne-let
- ObservableObject
- Xcode
- closure
- SnapshotTest
- Task
- Swift Format
- Swift Concurrency
- AppGroup
- 백준
- rxswift
- 스위프트
- prepareForReuse
- 프로그래머스
- XCTest
- 코딩테스트
- 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 |