Swift
Swift Delegate Pattern
pockpock
2024. 6. 30. 13:33
Delegate Pattern
팀 프로젝트 시작 전 선행학습(챌린지 반 수업 과제)
델리게이트 패턴이란?
보통 Table View && Collection View 에서 많이 사용 됨
인스턴스가 특정 작업을 다른 인스턴스에 위임하여 처리 하도록 함 (짬처리 하는거 아닌가?)
암튼
프로토콜은 델리게이트가 수행해야 할 작업을 정의하고, 델리게이트 프로퍼티는 실제로 그 작업을 수행할 인스턴스를 참조 함
그렇게 이제 델리게이트를 사용하는 클래스는 특정 이벤트가 발생했을 때 델리게이트 메서드를 호출하고,
구현하는 클래스는 그 메서드를 실제로 구현하여 이벤트에 대한 처리를 수행 함
이론은 이게 끝임 코드를 한번 보자구

Delegate Pattern 예시
// 1. 프로토콜 정의
protocol ButtonDelegate: AnyObject {
func didTapButton()
}
// 2. 델리게이트를 사용하는 클래스
class Button {
weak var delegate: ButtonDelegate?
func tap() {
// 3. 델리게이트 메서드 호출
delegate?.didTapButton()
}
}
// 4. 델리게이트를 구현하는 클래스
class ViewController: UIViewController, ButtonDelegate {
let button = Button()
overrid func viewDidLoad() {
super.viewDidLoad()
button.delegate = self
}
}
// 6. 델리게이트 메서드 구현
func didTapButton() {
print("버튼이 눌렷서")
}
}
// 앱의 진입점 예시 (주로 AppDelegate or SceneDelegate에서 호출 됨)
let viewController = ViewController()
viewController.viewDidLoad()
viewController.button.tap()