일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- async
- SWiFT
- DooC
- Physical Audio
- User Enrollment
- concurrency
- SF Symbols
- CoreML
- SF Symbols 3.0
- actor
- App Clip
- WWDC 2021
- NSUserActivity
- profile
- Hand Pose Detect
- Xcode Organizer
- AR Quick Look
- AVFoundation
- ProRAW
- detent
- AppleEvent
- METAL
- Xcode Cloud
- MDM
- Hand Action Detect
- Object Capture
- Mac
- Reality Composer
- swiftUI
- DriverKit
- Today
- Total
목록async (7)
nyancoder
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10146/ AVAsset async inspection AVAsset에 대한 조사는 비디오 파일이 크기 때문에 필요할 때 필요한 값에 대해 진행됩니다. 또한 네트워크를 통해 값을 가져올 수 있기 때문에 비동기로 동작합니다. async를 지원하는 새 load API를 통해 비동기로 쉽게 값을 가져올 수 있습니다. 하나의 값을 불러오는 것과 거의 유사하게 여러 개의 값을 불러올 수 있습니다. 특정 값의 상태가 불러온 상태인지, 아니면 아직 불러오지 않았는지, 값을 얻어오는데 실패한 상태인지 등을 체크할 수 있는 status 함수가 추가되었습니다. AVAsset에는 비동기로 값을 불러올 수 있는 많은 함수와 ..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10258/ What are hangs 메인 루프에서는 사용자의 입력 - 처리 - 화면에 출력의 순서로 작업이 진행됩니다. 현재 작업이 느리게 처리되면 입력에 대한 화면의 갱신이 늦어지고, 사용자는 앱이 멈추는 현상을 느낄 것입니다. 하나의 작업이 처리되는 중에 들어오는 이벤트는 현재의 작업이 완료된 후 처리되기 시작합니다. 일반적으로 1초 이상 응답이 걸리는 경우 사용자는 앱이 멈춘 것처럼 느낍니다. 뷰에 진입할 때 발생하는 지연은 스크롤할 때 발생하는 지연보다 덜 민감하게 느껴집니다. What causes hangs hang의 원인은 메인 스레드에서 많은 작업을 수행하는 경우와, 메인 스레드가 블록 되..
문제 상황 Swift의 Actor에서 다른 Actor의 함수를 접근할 때 발생하는 오류 중 하나로 아래와 같이 발생한다. 해결 방안 해당 함수를 async로 선언하면 발생하지 않는다. actor TestActor { func foo(testActor: TestActor) async { await testActor.bar() } func bar() { } } 또는 아래와 같이 async 블럭으로 감싸도 된다. actor TestActor { func foo(testActor: TestActor) { async { await testActor.bar() } } func bar() { } } 연관 자료: WWDC 2021 - Protect mutable state with Swift actors WWDC 20..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10058/ Async Sequence 비동기로 동작한다는 점을 제외하면 Sequence와 동일합니다. 예외를 던질 수 있습니다. Sequence가 끝나거나 오류가 발생할 수 있습니다. 기존 Sequence와 동일하게 for문에서 break, continue를 사용할 수 있습니다. Iterating a AsyncSequence Async Sequence의 for 문 사용은 기존 Sequence의 for문 사용과 거의 동일합니다. 차이점은 iterator에서 다음 값을 받아올 때 비동기로 받아온다는 점입니다. for try 구문을 사용한 경우 do - catch 문을 통해서 예외 처리를 할 수 있습니다. 전..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10254/ 이 장에서는 Swift 동시성 모델에 대한 이해와 성능 향상을 위한 방법에 대해 알아보겠습니다. Threading Model 많은 양의 데이터를 비동기로 업데이트하는 코드는 수많은 스레드를 생성할 수 있습니다. CPU 코어의 개수를 넘는 스레드는 성능 문제를 일으킵니다. 많은 스레드는 각각의 메모리 공간을 가지고 있어야 하기 때문에 메모리 오버헤드를 가집니다. 많은 스레드가 생성되면 많은 context switching이 발생하므로 CPU가 비효율 적으로 동작합니다. Concurrency in Swift Swift의 async/await는 매번 새 스레드를 생성하지 않기 때문에 Context ..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10132/ 이 장에서는 Swift에서 새로 지원되는 async/await 구문의 활용에 대해서 알아봅니다. 기존 방식의 문제점 예외가 발생하거나 실패 시에 completion 블록을 호출해 주는 것을 빼먹기가 쉽습니다. completion 호출을 함수가 끝나는 모든 지점에 넣어야 해서 코드가 복잡해집니다. Error?를 전달하는 대신 표준 라이브러리의 Result를 사용할 수 있지만 코드가 살짝 길어지고 약간 안정성이 더해질 뿐 근본적으로는 큰 차이가 없습니다. Async / await 함수에 async 키워드를 추가하여 비동기로 호출되는 함수임을 알릴 수 있습니다. completion블록을 전달하지 않..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10134/ 이 장에서는 Swift에서 새로 지원되는 구조화된 동시성 프로그래밍에 대해서 알아봅니다. 기존 방식의 문제점 위와 같은 기존의 비동기 작업을 처리하는 코드가 있을 때 겪을 수 있는 어려움은 다음과 같습니다. try - catch와 같은 기존의 예외처리 방식을 사용할 수 없습니다. for를 사용한 반복문을 사용할 수 없습니다. 1. Async Let 위와 같이 변경된 방식에서는 다음의 장점을 얻을 수 있습니다. 함수에 async thorws 키워드를 사용해 기존의 try - catch 예외처리 방식을 사용할 수 있습니다. Task를 통해 작업을 병렬로 수행할 수 있으며, 발생할 수 있는 버그를 ..