클로저 안에 락을 두어 생기는 데드락 (Apple 시스템 API) 클로저 안에 락이 들어 있으면 위험함. 획득이든 해제든 락의 수명이 클로저 실행에 묶이는데, 클로저가 언제 불릴지, 혹은 불리지 않을지 앱이 통제하지 못하기 때문. 애플 시스템 API를 쓰는 영역에서 이 형태로 데드락이 발생. lock을 잡고 시스템 API를 호출한 뒤 완료 클로저 안에서 unlock을 하던 기존 코드였음. 그 클로저가 끝내 호출되지 않으면 lock이 풀리지 않아 무한 대기에 빠짐. 완료 클로저 안의 unlock이 실행되지 않는 경우락을 잡은 채로 완료 클로저 안에서만 unlock을 하는 형태로 실제 코드를 단순화하면 아래와 같음. func activateAudioSession() { lock.lock() // ..