Protocol, Delegate

나이든별 / Oldstar·2022년 5월 16일
0

Think about Keywords

목록 보기
19/37

공부한 것

  • Protocol
  • Delegate

고민한 점 및 생각해본 점

  • 처음에는 왜 굳이 Delegate을 쓸까? 생각했다. 이미 프로토콜이 어떤 함수를 구현할지 정해 주는 역할을 하는데, 무슨 차이가 있는 거지?
  • 사장과 비서의 비유가 굉장히 유효했다고 생각한다. 특히 UI 관련된 여러 Delegate들을 왜 사용하는지에 대해 명확히 이해할 수 있었다.
  • UITableView같은 '사장님'은 어떻게 작동하는지 우리가 까볼 수가 없고, 단지 특정 상황에서 UITableViewDelegate에 있는 특정 메서드를 불러오는 것만 알 수 있다.
  • 즉, 사장님이 비서에게 여러 가지 땡깡을 부릴 수 있는 것이다.
  • 우리가 해야 할 역할은, 이 땡깡을 접수했을 때 어떤 액션을 취할지를 해당 메서드에 써 주면 되는 것이다.
  • 데이터를 넘겨주는 Delegate에 대해서도 생각해 보았다. 이 경우, 사장님이 뭘 달라고 땡깡을 부리면 비서가 전달해주는 식으로 진행이 되겠다.
  • 그런데, 이 동작은 비서 프로토콜을 갖고 있는 클래스/구조체 안에서만 이루어지면 안 된다. 어쨌든 사장님 인스턴스한테 전달이 되어야 하는 것.
  • 그러면, 비서 메서드에서 '탈출할' 수 있는 행동의 결과는 무엇일까? 나는 여기서 @escaping클로저에 대해 떠올릴 수 있었다. 흔히 completion이라고 부르는 그것.
  • 주로 Delegate이 가지고 있는 메서드에서 completion: @escaping (Result<T, Error>) -> Void 의 형태로 작성해주곤 했다.
  • 비서가 뭔가를 건네 주면, 사장님이 그걸 어떻게 활용할지 이 클로저를 통해 정해줄 수 있는 것이다. 더이상 무능하지 않은 사장님..

참조

profile
함께 나아가고자 하는 사람

0개의 댓글