분류 전체보기 29

Swift Concurrency - Task cancellation과 hierarchy 심화 (3)

ReferenceWWDC23: Beyond the basics of structured concurrency | Apple들어가며Swift Concurrency를 공부하면서Task.cancel()을 호출하면 모든 작업이 즉시 멈춘다고 막연히 생각하고 있었다.그런데 WWDC 세션 “Beyond the basics of structured concurrency”를 보면서내가 이해하고 있던 cancellation 모델이 꽤 단순했다는 걸 알게 됐다. 이번 글에서는Task cancellation이 실제로 어떻게 전파되고, 왜 ‘cooperative’하다고 말하는지,그리고 그로 인해 등장한 withTaskCancellationHandler까지헷갈렸던 포인트 위주로 정리해보려고 한다.Task hierarchy와 c..

Swift 2026.01.14

Swift Concurrency - Structured Concurrency & Task (2)

ReferenceWWDC21: Explore structured concurrency in Swift | Apple Swift Concurrency 를 공부하다보면 async-await 외에도 자주 접하는게 Task 라는 녀석이다. 그런데 이게 익숙하지 않던 개념이어서 그런지 확실히 머릿속에 정리하기가 쉽지 않았다. Task { } ?아마 한번이라도 Swift Concurrency 를 시도했던 사람이라면 Task {} 를 본적이 있을 것이다.이 initializer의 용도는 "비동기 코드(async 함수)를 실행하기 위한 새로운 실행 컨텍스트를 제공한다." 라고 한다. 원래 작성되어있던 프로젝트 코드에서 async 함수를 호출하고 싶을 때 냅다 그냥 async 함수를 호출하면 오류가 나는데, async ..

Swift 2025.10.01

Swift Concurrency - Async Await (1)

ReferenceWWDC21: Meet async/await in Swift | AppleAsync/Await 등장 배경우선 Swift Concurrency를 사용하려면, async-await 를 알아야한다. 그러려면 동기vs비동기 코드의 차이를 알아야 한다.동기 코드와 비동기 코드는 iOS를 개발해봤다면 모를 수가 없다.가장 일반적인 코드 작성 방식이 동기 코드를 작성하는 방법이고, 나중에 이벤트가 발생하면 호출할 코드는 따로 closure 의 형태로 작성하는데 이게 비동기 코드이다. 그래서 보통 오래 걸리는 작업은 비동기 코드를 사용해 언젠지 모르지만 이벤트가 발생하면 그때 처리하도록 하고, 나머지의 일반적인 케이스에서는 동기 코드로 작성하곤한다. 아래처럼 URLSession 의 dataTask 함수..

Swift 2025.09.27

Swift Concurrency - 시작하기 전에 (0)

이전에 Swift Concurrency 가 처음 나왔을 때 도입을 시도했었다. 그런데 async 가 연결연결 되는 구조이다 보니까 수정범위가 꽤 많았고, 나도 그때 당시 Swift Concurrency를 완벽히 알고 있던 상황은 아니어서 사이드이펙트 없이 수정할 수 있겠다는 자신이 없었다. 또 이게 화면에 보이는 작업이 아닌 뒷단에서 로직을 개선하는 작업이라 회사입장에서 급하게 적용해야 하는 사항도 아니었고... 등등 다양한 회사 사정도 껴있긴 한데.. 아무튼 이런저런 이유로 당장 프로젝트에 적용하는 건 미루기로 팀 내에서 얘기가 됐었다. 최근 회사 동료한테 Swift Concurrency 스터디 진행한다는 얘길듣고 그 스터디방에서 야금야금 같이 공부하고 있었는데, 이번 프로젝트에 Swift Concur..

Swift 2025.09.27

[AVFoundation]

https://developer.apple.com/documentation/avfoundationAVAsset한개이상의 AVAssetTrack 으로 구성된다.local / remote 의 media 를 담는다.file-based / streamed(HLS = HTTP Live Streaming) media 를 담는다.duration : asset 길이, providesPreciseDurationAndTiming 가 false 인 경우 durationprovidesPreciseDurationAndTiming : default false, 단순 asset play 용도라면 false 로 충분, asset 이 조작될 여지가 있다면 true 로 세팅되어야한다.AVAssetTrack하나의 media type 을 ..

기타 2024.08.01

[Swift Standard Library]

ConcurrencyTask(idel time 부여)ex) try? await Task.sleep(for: .milliseconds(500))Actorprotocol Actor : AnyActor[ ] https://sujinnaljin.medium.com/swift-actor-뿌시기-249aee2b732d 추가 공부 필요!병렬 프로그래밍에서 데이터 경합(Data Race) 문제를 줄이기 위해 고안되었다.동기화된 상태 관리 : actor 내부의 상태는 actor 자신만이 직접 접근할 수 있으며, 다른 코드가 접근하려면 actor의 메서드를 통해야 합니다. 이렇게 하면 동시성 문제를 피할 수 있습니다.직렬화된 접근 : actor의 메서드는 한 번에 하나의 쓰레드만 접근할 수 있도록 직렬화됩니다. 따라서 동..

Swift 2024.08.01

[iOS] 공부 링크 (ing...)

init, required init, convenience init, override init required init : 클래스 상속시 반드시 init이 재구현 되어야함 convenience init : self.init 을 더 쉽게 호출할 수 있도록 구현한 init override init : 클래스 상속시 상위클래스와 init 파라미터가 동일한 경우 사용 https://ios-development.tistory.com/44 [swift] 13. 초기화(init, convenience init, required init, override init) let b = Boo() 원래의 의미는 "let b = Boo.init()" 1. init의 존재 이유 - 모든 저장 프로퍼티들은 초기화 되어야 함, in..

iOS 2022.02.07