[swift] 클로저 딜리게이트

딜리게이트(delegate)는 한 객체가 다른 객체로 작업을 위임하거나 이벤트를 전달하는 디자인 패턴입니다. 스위프트(Swift)에서는 클로저를 사용하여 더욱 간편하게 딜리게이트를 구현할 수 있습니다.

1. 딜리게이트 프로토콜 정의

먼저 딜리게이트를 사용할 객체에서 딜리게이트 프로토콜을 정의합니다.

protocol CustomDelegate: AnyObject {
    func didReceiveData(data: String)
}

위의 코드에서 CustomDelegate 프로토콜은 didReceiveData 메서드를 정의하고 있습니다.

2. 딜리게이트 속성 추가

딜리게이트를 사용할 객체에 딜리게이트 속성을 추가합니다.

class DataManager {
    weak var delegate: CustomDelegate?
    
    func fetchData() {
        // 데이터를 가져오는 로직
        let data = "Example Data"
        
        // 데이터를 딜리게이트로 전달
        delegate?.didReceiveData(data: data)
    }
}

DataManager 클래스에 delegate 속성을 추가하고, fetchData 메서드에서 해당 딜리게이트를 통해 데이터를 전달합니다.

3. 클로저를 이용한 딜리게이트 처리

클로저를 이용하여 딜리게이트를 구현하려면, 다음과 같이 코드를 작성할 수 있습니다.

class CustomViewController: UIViewController, CustomDelegate {
    let dataManager = DataManager()
    
    func setupDelegate() {
        dataManager.delegate = self
    }
    
    func didReceiveData(data: String) {
        // 받아온 데이터를 처리하는 로직
        print("Received data: \(data)")
    }
}

CustomViewController 클래스에서 CustomDelegate 프로토콜을 채택하고, dataManager의 딜리게이트로 자기 자신을 지정하여 클로저를 이용하여 딜리게이트를 처리할 수 있습니다.

클로저를 사용한 딜리게이트 구현을 통해 코드의 간결성과 가독성을 향상시킬 수 있습니다.

참고 자료