일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Reality Composer
- Mac
- App Clip
- detent
- swiftUI
- SF Symbols
- WWDC 2021
- Xcode Organizer
- User Enrollment
- CoreML
- SF Symbols 3.0
- actor
- Hand Action Detect
- DriverKit
- Physical Audio
- Object Capture
- AVFoundation
- DooC
- AR Quick Look
- MDM
- concurrency
- Xcode Cloud
- NSUserActivity
- METAL
- ProRAW
- profile
- Hand Pose Detect
- async
- SWiFT
- AppleEvent
- Today
- Total
목록SWiFT (13)
nyancoder
Swift의 Property Wrapper를 사용하여, 전달되는 파라메터의 속성을 제한하는 방법을 알아볼 것입니다. 예를 들어 사용자의 입력을 받아 최대 20자의 제목을 등록하는 예를 들어 볼 것입니다. 기존 방법 이전에는 함수를 만들고 제약 사항을 벗어나면 예외를 만들거나, assert문으로 검증하는 아래와 같은 방법이 대표적이었습니다. 예를 들어 assert로 처리하면 아래와 같습니다. func register(title: String) { assert(title.count 20 { validTitle = String(title.prefix(20)) } else { validTitle = title } // do something.. } 하지만 이러한 코드는 전달받는 파라메터의 속성을 명확하게 드러나..
새 Swift버전에 Actor가 추가되면서 여러 스레드에서 접근했을 때 발생할 수 있는 여러 동시성 문제들을 해결하는 좋은 해결책 중 하나로 관심을 받고 있습니다. 기존에도 동시성 문제를 해결하기 위해서 각종 Lock이나 DispatchQueue 등을 활용하여 문제를 해결할 수 있었지만, Actor를 사용하면 컴파일러가 근본적으로 동시성 문제를 확인하고 오류를 일으킬 수 있습니다. Actor의 역할은 크게 세 가지로 볼 수 있습니다. 코드 생성 단계 - actor내에 선언된 함수에 async를 자동으로 적용해주고, actor의 구현에 필요한 코드를 자동으로 생성해 줍니다. 컴파일 단계 - 동시성 문제가 발생할 수 있는 코드를 작성하면 컴파일러가 오류를 일으켜서 수정하도록 해 줍니다. 실행 단계 - 각 코..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10076/ Object Capture 원하는 물체를 3D 모델로 만들어 내기 위해서 우선 모든 각도에서 대상의 사진을 촬영해야 합니다. 촬영된 결과물을 새로운 Object Capture API를 지원하는 Mac에 복사합니다. "photogrammetry"라고 불리는 기술을 사용해서 몇 분 만에 2D 이미지 들을 3D 모델로 변경할 수 있습니다. 출력된 결과에는 기하학적 구조를 담당하는 메시와 다양한 material map들이 포함되어 있으며 앱에 넣거나 AR Quick Look에서 바로 결과를 확인할 수 있습니다. 위의 단계들을 좀 더 세분화하여 살펴보자면 사진 촬영 단계에서는 다양한 방법으로 사진을 촬..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10047/ AVFoundation capture classes AVCaptureDevice는 핵심 객체인 카메라 또는 마이크를 나타내는 입니다. AVCaptureDeviceInputs는 이러한 장치를 감싸며, 중앙 제어 객체인 AVCaptureSession에 연결할 수 있습니다. AVCaptureOutputs는 각각의 방식으로 입력된 데이터를 표시합니다. MovieFileOutput은 QuickTime 동영상을 저장하며, PhotoOutput은 Live Photo 및 고해상도 이미지를 저장합니다. VideoDataOutput과 AudioDataOutput은 비디오, 오디오 버퍼를 전달합니다. CALaye..
원본 영상: 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의 원인은 메인 스레드에서 많은 작업을 수행하는 경우와, 메인 스레드가 블록 되..
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10192/ Diversity 더 많은 개발자가 Swift 생태계 및 커뮤니티에 참여하도록 장려하고 있습니다. swift.org 블로그에서 다양한 개발자들의 기여를 인정하고 안내하는 게시물을 올렸습니다. 개발자들이 서로 연결될 수 있도록 Swift 포럼에 커뮤니티 그룹을 만들었습니다. swift.org/diversity에서 더 자세한 내용을 확인할 수 있습니다. 새로운 개발자가 기존의 개발자로부터 Swift전반에 걸쳐 지원을 받을 수 있는 멘토링 프로그램을 만들었습니다. Update on Swift packages 좋은 패키지 검색 도구였던 Swift Package Index가 Xcode도구에 통합되었..
문제 상황 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..