[Instruments 맛보기] Swift Concurrency 시각화 및 최적화하기
·
iOS/Instruments
🏁 학습할 내용예제 코드의 문제 파악하기Instruments 보며, 원인 프로파일링예제를 통한 코드 개선해보기😂 예제코드@MainActorclass CompressionState: ObservableObject { @Published var files: [FileStatus] = [] var logs: [String] = [] func update(url: URL, progress: Double) { if let loc = files.firstIndex(where: {$0.url == url}) { files[loc].progress = progress } } func update(url: URL, uncompres..
AsyncStream
·
iOS/Swift Concurrency
👋 들어가기 전이번 포스팅은 컨커런시에서 제공해주는 비동기 반복문에 사용되는 객체를 내가 직접 만들기 위한 여정을 알아보자. 비동기 반복문은 for awiat in ... 형태인데여기서 ...에 들어가는 내용이 바로 AsyncStream이다. 또한 실제 동기 for문에서도 쓰이는 여러가지 collection들은 반복문들과 사용하기위해Sequence + IteratorProtocol을 채택하고 있다. 비동기 반복문 역시도 AsyncSequence + AsyncIteratorProtocol을 채택해야한다. 차례대로 알아보자.🏁 학습할 내용AsyncSequenceAsyncIteratorProtocolAsyncStream🚂 AsyncSequence먼저 알아볼 내용은 AsyncSequence 프로토콜이다. ..
#isolation vs @isolated(any)
·
iOS/Swift Concurrency
👋 들어가기 전https://hamp.tistory.com/212 Actor👋 들어가기 전먼저 간단한 선행 내용을 먼저 정리한 이후 엘런님 강의를 듣고 나서 다시 한번 더 내용을 채우러 오겠다.🏁 학습할 내용Actor란 무엇인가특징 및 동작방식어떻게 동기화 메커니hamp.tistory.com 이전 actor 포스팅 마지막 부분에서 우리는 nonisolated 키워드와 isolated키워드를 배웠고https://hamp.tistory.com/218 @globalActor👋 들어가기 전이번 포스팅은 글로벌 Actor라는 내용을 학습해보자.엑터를 공부한 이후, @MainActor를 공부했는데 , @MainActor처럼 쓸 수 있게 내가 커스텀으로 만들어낼 수 있는 방법이 있다.🏁 학습hamp.tist..
sending
·
iOS/Swift Concurrency
👋 들어가기 전오눌 학습할 내용은 Sending 키워드다. 이전에 배웠던 @Sendable과 생각보다 관련성이 있어 보인다. 이번에 확실히 짚고 넘어가자🏁 학습할 내용@Sendable이란sending이 등장한 계기sending이란@Sendable과 sending 정리🛫 @Sendable이란https://hamp.tistory.com/214 @Sendable👋 들어가기 전두번 째 attribute는 @Sendable이다. 아무래도 배우는 attribute들의 순서가 고민이 많았는데Conccurency의 가장 기본이 되는 Sendable attribute부터 살펴보자. 🏁 학습할 내용Sendable 프로토콜@Sehamp.tistory.com 이전에 작성한 내용을 정리해보면 @Sendable은 다음..
@globalActor
·
iOS/Swift Concurrency
👋 들어가기 전이번 포스팅은 글로벌 Actor라는 내용을 학습해보자.엑터를 공부한 이후, @MainActor를 공부했는데 , @MainActor처럼 쓸 수 있게 내가 커스텀으로 만들어낼 수 있는 방법이 있다.🏁 학습할 내용글로벌 엑터란🌐 Global 엑터란⭐️ 정의앱 전반적으로 사용되는 엑터 타입MainActor도 글로벌 엑터의 한 종류이다. 🧰 사용법 @globalActor를 actor선언 시 붙혀준다.static 형태의 shared 변수를 만들어준다.@globalActoractor MyGlobalActor { static let shared: MyGlobalActor = MyGlobalActor() ...}@MyGlobalActorfinal class A { var arr: [Int] =..
@preconcurrency
·
iOS/Swift Concurrency
👋 들어가기 전이번에 학습할 속성은 @preconcurrency다.많이 무겁지 않으니 바로 시작해보자🏁 학습할 내용@preconcurrency란?언제 사용할까?@unchecked Sendable과 차이🏁 @preconcurrency란📋 정의Sendable 체크 이전에 작성된 코드이며, 동시성 안전성을 보장하지 않아도 경고 없이 사용할 수 있다.❓언제 사용할까? Swift6 도입하면서 동시성에 대한 엄격한 검사(strict concurrency)가 컴파일 타임에 진행된다. 이때 이전 부터 운영된 서비스들의 API를 모두 Swift6에 맞게 바꾸게 된다면그 비용을 한번에 부담하기에는 개발자 입장이 매우 곤란하다. 이 때 @preconcurrency는 다음과 같은 2개의 입장을 표현한다. 1. 옛날 코..