Apple의 Audio Session Documentation 을 참고하여 따로 정리해본 오디오 세션 정리글입니다. Audio Session 동작에 대한 개괄적인 설명과 play, record 등을 위한 Audio Session Setting 방법을 다룹니다. 더 상세히 공부하고 싶다면 여기를 참고하세요. Audio Session Audio Session은 다음 그림으로 이해할 수 있다. OS단에서 관리하는 오디오 모듈이 있음. 애플에서는 앱에서 이 오디오 모듈과 통신할 수 있도록 오디오 세션 API를 제공함 앱이 시작되면 자동으로 오디오 세션이 제공됨 (AVAudioSession. 싱글톤) 오디오 세션의 라이프사이클은 앱의 라이프사이클과 일치 앱의 라이프사이클동안, 앱 오디오 세션과 OS단과의 인터랙션..
WWDC 2019 세션 중 하나인 Data Flow Through SwiftUI의 흐름을 따라가며 요약/메모. SwiftUI와 Combine 영상을 다시 보던 중 정리할 겸 해서 포스팅합니다. 발표 시점으로부터 시간이 흐르며 리네이밍 된 API 등도 있어서 그건 따로 표기를 해두었습니다. 애플이 추구하는 방향, 핵심적인 개념 등은 변하지 않았기 때문에 아직 듣지 않으신 분들은 한 번 들어보시거나 이 포스트를 읽어보셔도 좋을 것 같습니다. 세션 개요SwiftUI는 UI개발의 복잡성을 해결하기 위해 새롭게 고안된 것으로써, 심플하지만 강력한 툴입니다. 여러분이 일관성있는 아름답고 정확한 유저 인터페이스를 작성할 수 있도록 완전히 새롭게 만들어졌습니다. 완전히 예측 가능하며 오류도 없이 UI를 데이터에 의존하..
원문 Adding items to Swift array across multiple threads causing issues (because arrays aren't thread safe) - how do I get around that? 뜻을 이해하기 쉽도록 의역/추가설명을 붙인 부분들이 있습니다. Question Swift 멀티 쓰레드 환경에서 Array에 아이템을 추가하려고 했더니 이슈가 발생했습니다(Array가 쓰레드에 안전하지 않음). 어떻게 하면 될까요? 저는 블럭을 저장하는 Array를 만들고, 요청을 받았을 때 그 Array 안의 블럭을 전부 실행시켜주고 싶었습니다. 그래서 다음과 유사한 코드를 작성했습니다. class MyArrayBlockClass { private var blocksA..
원문 Difference between DispatchQueue.main.async and DispatchQueue.main.sync 뜻을 이해하기 쉽도록 의역/추가설명을 붙인 부분들이 있습니다. Question 저는 그동안 UI 관련 동작을 수행하기 위해 DispatchQueue.main.async 를 계속 사용해왔습니다. Swift는 DispatchQueue.main.async 와 DispatchQueue.main.sync 를 제공해주며 둘 다 main queue 에서 수행됩니다. 두 개의 차이가 무엇인지, 언제 무엇을 사용해야 하는지 알려주실 분이 계신가요? DispatchQueue.main.async { self.imageView.image = imageView self.lbltitle.text ..
Apple 에서 제공하는 프로그래밍 가이드 중 Threading Programming Guide의 Thread Management 챕터를 공부하며 기록용으로 정리한 글입니다. 전문을 번역한 글이 아닌 점 참고바랍니다. 들어가며OS X 또는 iOS 의 각 프로세스(어플리케이션)는 하나 또는 그 이상의 쓰레드로 구성됩니다. 이때 하나의 쓰레드는 코드를 통해 실행되는 하나의 경로 (single path of execution through the application's code) 를 나타냅니다. 모든 어플리케이션은 메인 함수를 실행하는 싱글 쓰레드로 시작합니다. 어플리케이션은 특별한 역할의 코드를 실행할 추가적인 쓰레드들도 생성할 수 있습니다.어플리케이션이 새로운 쓰레드를 생성했을 때, 그 쓰레드는 어플리케..
Apple 에서 제공하는 프로그래밍 가이드 중 Threading Programming Guide의 About Threaded Programming 챕터를 공부하며 기록용으로 정리한 글입니다. 전문을 번역한 글이 아닌 점 참고바랍니다. 들어가며오랫동안 컴퓨터의 최대 퍼포먼스는 싱글 마이크로프로세서의 속도에 따라 크게 좌우되었습니다. 그러나 멀티코어 디자인이 도입되면서 컴퓨터는 여러 테스크를 동시에 수행할 수 있는 기회를 제공받게 되었습니다. OS X는 시스템 관련 테스크를 수행할 때 이런 멀티코어를 활용하고 있으며, 당신의 어플리케이션 역시 쓰레드를 통해 이런 것들을 활용할 수 있습니다. 그럼 지금부터 쓰레드라는 것의 개념과 역할에 대해 알아보겠습니다. What Are Threads?쓰레드 (Thread)..