Question

Delegate Pattern using Swift protocols.

좋아, delegate가 protocol로 이루어져있고, 내부에 존재하는 함수들을 사용하고 싶을 때, View Controller 클래스에서 해당 함수를 구현(implement)해서 사용한다는 점은 알겠어

그렇다면 왜 Delegate를 사용하는 걸까? 🤔

Delegate Pattern?

A proven solution to a common problem

Apple은 앱개발을 위해서 여러가지 templates(클래스)들을 만들어 놓았는데, 몇가지 문제가 있었다.

problem

Untitled

Apple은 템플릿을 사용하는 개발자의 모든 경우의 수를 파악할 수 없기 때문에, 해당 템플릿이 사용되는 특정한 상황들을 만들어 놓았다. 예를들면, 사용자가 입력창에 글을 입력하고 엔터를 눌렀을 때, 또는 취소를 눌렀을 때. 그리고 구체적인 구현 부분은 개발자에게 맡기고 싶다.

혼자 개발을 한다면 이런 상황에서 관련 함수들을 따로 밖으로 빼내서 클래스를 만들고, 다음과 같이 인스턴스화해서 사용을 한다.

class MyTextFieldController {
		func 사용자가엔터를눌렀을때() { 
			if 잘못된값이들어오면 { 에러창소환! }
		}
}

class MyTextField {
	let myCon = MyTextFieldController()

	//특정 조건 (사용자가 엔터를 눌렀을 때) <- 이부분은 애플만의 내부 로직 (secret)
	if ... {
			myCon.사용자가엔터를눌렀을때()
	}
}