뚝딱뚝딱 모바일

[iOS] Delegate 패턴에 대해 알아보자 본문

iOS 지식

[iOS] Delegate 패턴에 대해 알아보자

규석 2023. 2. 13. 20:09

안녕하세요!

이번엔 Delegate 패턴에 대해 알아보겠습니다.


Delegate 패턴이 무엇을 뜻하는지 알아봅시다.

Delegate 패턴이란?

Delegate 패턴은 객체가 자신의 책임, 행동을 다른 객체에게 위임하여 수행하게 하는 디자인 패턴이라 할 수 있습니다. iOS 개발을 해보신 분들이라면 자주 봤을 패턴인데, UITableVIewDelegate가 대표적 예시입니다.

 

그럼 이 Delegate 패턴은 어떻게 쓰는 것일까요?

UITableViewDelegate를 예시로 들어보겠습니다.

일단 UITableViewDelegate는 주로 어떤 역할을 하는지 생각해 보면

tableView의 시점에 따른 해야 할 행동들을 정의해주곤 하죠.

(https://developer.apple.com/documentation/uikit/uitableviewdelegate)

 

그리고 우리는 이런 UITableViewDelegate를 필요한 클래스에 위임시켜서 사용합니다.

뭔가 감이 잡히지 않나요? 위임이라니...!

UITableViewDelegate는 하나의 Protocol이고 Swift에서는 Protocol을 위임하여 사용합니다.

그럼 이 뜻은, UITableViewDelegate가 행동을 위임하여 우리가 사용하려는 클래스에게 수행하려 한다가 됩니다!

 

그렇다면 왜 이렇게 동작되어야 하는 걸까요?

(물론 TableView에 관해선 다른 구현 방법도 많지만, Delegate 설명만을 위해 적어보겠습니다.)

결론부터 말하면 UITableView는 UITableViewDelegate에서 해야할 일들을 어떻게 해야 할지 모르기 때문입니다.

개발자가 어떤 동작을 하고 싶은지를 모르기에 Delegate라는 패턴을 선택하여 알 수 있게 하는 것입니다.

UITableView에서는 Delegate의 함수를 필요한 부분에 호출을 하고 Delegate를 위임받은 클래스에서 정의된 동작들을 하는 것입니다.

 

Delegate 패턴의 장점은?

그렇다면 이런 Delegate 패턴은 어떤 장점이 있는 걸까요?

 

위에서 말한 특징을 보면 코드를 재사용하고 유지보수하기 쉬워집니다. 

같은 작업임에도 클래스마다 약간씩 다른 내용을 처리해야 한다고 하면, 같은 작업에 대해서는 함수만 전달하기만 하고, 약간씩 다른 내용들은 위임받은 객체에서 처리하기만 하면 되는 장점이 있습니다.

또한, 다른 클래스에서는 필요하지만, 지금은 필요 없는 작업은 구현하지 않고 처리할 수 있죠.

 

Delegate에 대해 한번 정리해 보았습니다. Delegate란 어떤 것인가에 대해 초점을 맞춰서 작성했기에, 내용이 부실할 수 있지만 이 게시글 또한 추후 조금씩 추가하도록 하겠습니다.