사실 블로그와 GPT를 토대로 샘플 프로젝트를 만들고 있었는데
이전 글에 이어 샘플 프로젝트가 있었다는 사실을 뒤늦게 알았네요..ㅎ
항상 새로운 기능을 개발하기 전에 공식문서를 간단하게라도 훓어보자는 다짐을 해 봅니다..
이 샘플 프로젝트는 이전 글 내용을 토대로 카메라, 마이크 등을 input 으로 세션을 구성해서 녹화하는 프로젝트 입니다.
근데 재밌는게 SwiftUI와 Swift concurrency 기능을 사용해서 반응형(responsive) 앱 이라고 합니다.
The sample uses SwiftUI and the features of Swift concurrency to build a responsive camera app.
여기서 actor 형태인 CaptureService 가 key type 이라고 하네요
그리고 CaptureService가 actor 인 이유는 main thread 에서 동작되지 않게 막기 위함이라고 합니다.
앞선 session을 구성, 캡쳐 하는 과정에 더해 main thread 에서 동작되면 UI 응답성이 낮아질 수 있다는 것 같네요
여기서 UI가 아닌, 실시간 동작은 actor를 사용해서 쓰레드 관리도 가능하다는 것을 알고 갑니다.
이후 내용은 샘플 프로젝트의 실제 코드를 토대로 분석하며 작성해보겠습니다.