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()