Delegate는 '위임하다'와 같은 의미로 해석된다.
다시 말하면 어떤 객체에서 일어나는 이벤트에 관한 혹은 어떤 객체에 뿌려줄 데이터에 관한 코드를 다른 객체에서 작성해주는 것을 말한다.
즉, Sender의 일을 Receiver가 대신해주며 이러한 행위는 Protocol을 동반한다.
이러한 객체들 간 대화하는 방법은 여러가지가 있다.
protocol DelegateName {
func Task()
}
클래스 위에 ": DelegateName"을 작성하여 해당 클래스가 Delegate를 따른다는 것을 표현한다.
일을 수행 전, 그 전에 해당 일이 어떤 객체로부터 주어졌는지 명시해주어야 한다.
protocol의 함수를 구현해주어야 한다.