[swift] Swift에서 비동기 처리를 위한 콜백 함수 개념

Swift는 강력한 비동기 처리 기능을 제공하며, 콜백 함수를 사용하여 비동기 작업을 처리할 수 있습니다. 이번 글에서는 Swift에서 콜백 함수를 어떻게 사용하는지에 대해 알아보겠습니다.

콜백 함수란 무엇인가요?

콜백 함수(callback function)는 다른 함수의 인자로 전달되는 함수를 말합니다. 비동기 처리 시나리오에서 콜백 함수를 사용하면 작업이 완료되었을 때 해당 함수가 자동으로 호출되어 처리 결과를 받을 수 있습니다.

DispatchQueue를 사용한 비동기 처리

Swift에서 비동기 처리를 위해 DispatchQueue를 사용할 수 있습니다. DispatchQueue는 작업을 별도의 큐(queue)에 넣고, 해당 작업이 실행되는 쓰레드(thread)를 관리합니다.

DispatchQueue.main.async {
    // 비동기 작업이 수행되는 코드
    // 결과를 받을 콜백 함수
    // UI 업데이트 등
}

위의 예제에서 DispatchQueue.main.async를 사용하여 메인 큐에서 비동기 작업을 실행하고 있습니다. 이때, 중괄호 내부에 원하는 비동기 작업 코드와 콜백 함수를 작성할 수 있습니다.

콜백 함수를 사용한 비동기 작업

아래는 콜백 함수를 사용하여 비동기 작업을 처리하는 예제입니다. 예제는 서버에 HTTP 요청을 보내고, 응답 데이터를 콜백 함수로 처리하는 간단한 예제입니다.

func sendRequest(completion: @escaping (String) -> Void) {
    // 비동기 작업 수행 코드
    // 서버에 HTTP 요청을 보내고 응답 데이터를 받아옴
    
    let responseData = "Response data"
    
    DispatchQueue.main.async {
        completion(responseData) // 콜백 함수 호출
    }
}

sendRequest { response in
    // 콜백 함수 내부에서 처리할 코드 작성
    // 서버 응답 데이터를 이용한 UI 업데이트 등
    print(response)
}

위 예제에서 sendRequest 함수는 서버에 HTTP 요청을 보내고 응답 데이터를 받아오는 비동기 작업을 수행합니다. sendRequest 함수는 completion 파라미터로 콜백 함수를 받아옵니다. 비동기 작업이 완료되면 completion 콜백 함수를 호출하여 응답 데이터를 전달합니다.

sendRequest 함수를 호출할 때 콜백 함수를 클로저 형태로 전달하면, 응답 데이터를 이용하여 원하는 작업을 수행할 수 있습니다.

마무리

Swift에서 비동기 처리를 위한 콜백 함수는 매우 유용한 개념입니다. DispatchQueue를 이용하여 비동기 작업을 처리하고, 콜백 함수로 작업의 결과를 처리할 수 있습니다.

이번 글에서는 비동기 처리와 콜백 함수 개념에 대해 알아보았습니다. 콜백 함수를 사용하여 Swift에서 비동기 작업을 처리할 수 있습니다. 다음 번 글에서는 보다 복잡한 비동기 처리 방법을 살펴보도록 하겠습니다.

참고 자료