avaudiosessionportdescription

테스트 가능한 오디오 관리 객체 설계하기
문제소리가 정상적으로 입, 출력되는지 테스트하기 위해선 오디오 인터페이스부터 기타까지 실제로 연결해야만 테스트 할 수 있는 환경이었고, 그 결과 비효율적인 작업이 반복되었습니다.원인 분석AudioManager가 너무 많은 역할을 하다보니 필연적으로 코드가 길어지게 되었습니다.mark 주석으로 역할을 구분해두었지만 함수 내에서 다른 함수를 호출할 수 있어 사이드 이펙트 발생 위험이 존재했습니다.또한 실제 장치를 연결하지 않고 테스트할 수 없는 환경이었습니다.final class AudioManager { static let shared = AudioManager() private var cancellables = Set() // 사용 가능한 입력 장치 목록 var availableIn..