Continuation을 이용하여 컴플리션 핸들러, 델리게이트 패턴을 async 함수로 변환하기 (Swift)
iOS 개발을 하다 보면 비동기 처리를 위해 컴플리션 핸들러를 자주 사용하게 된다. 컴플리션 핸들러를 많이 사용하다보면 코드의 뎁스가 깊어지고 흐름을 알기가 어려워 디버깅이 복잡해지며 가독성이 떨어지는 문제점을 겪는다. 또한 다른 객체로 래핑하여 사용하려 할 때, 해당 함수를 사용하는 함수는 컴플리션을 또 상위에서 받아오도록 인터페이스를 작성해야 하는 불편함도 있다. 델리게이트 패턴 또한 코드의 흐름이 섞이게 되므로 비슷한 상황에 직면하게 된다. 스위프트에선 5.5 버전부터 async/await를 통해 비동기 처리를 지원하고 있고 애플의 많은 프레임워크들은 async/await에 대응하도록 인터페이스가 추가된 상태이다. 그러나 타사 프레임워크와 일부 애플 프레임워크들은 대부분 대응 업데이트가 되지 않아 ..
Swift 이론
2022. 6. 27. 15:00
