[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
의 딜리게이트로 자기 자신을 지정하여 클로저를 이용하여 딜리게이트를 처리할 수 있습니다.
클로저를 사용한 딜리게이트 구현을 통해 코드의 간결성과 가독성을 향상시킬 수 있습니다.