Ios/Swift

[Swift] Delegate 패턴 개념 잡기

okoo 2024. 7. 5. 17:46
반응형

개인적으로 난감한 패턴하나가 걸렸다.

가장 많이 사용하고 있다고 하는데 그 이름이 Delegate패턴이다.

 

왜 나에게 난감하냐 개인적으로 너무 복잡한 느낌이 든다.

 

일단 개념을 정리해보자.

 

Delegate 패턴은 클래스 간에 정보를 전달하거나 특정 이벤트가 발생했을 때 다른 객체에 알리는 데 사용되는 디자인 패턴이다.

한마디로 A클라스에서 B클래스의 함수를 호출할 때 발생하는 패턴인데

내가 진행중인 UITableView에서 cell의 경우 그냥 label을 사용하는 것이 아닌 button이나 추가적인 label을 넣으려면 customCell을 사용해야 한다.

이때 customCell의 버튼을 눌러서 View의 상태를 변경한다고 가정할 때 View의 상태를 변경하는 함수를 customCell에서 호출해야하는 상황이다.

첫 번째로 해야하는 것은 프로토콜을 정의해야한다.

그리고 그 프로토콜을 선언해줘야 한다. 

weak var delegate: CustomTableViewCellDelegate?

속성은 약한 참조로 선언하여 메모리 순환 참조를 방지한다.

 

두 번째로는 프로토콜에 선언된 함수를 목표지의 class에 구현한다.

세번째로는 customCell에서 메서드를 호출하면된다.

 

말로하면 간단한 것 같은데 왜 난 어지러울까

이 부분이 1:1로 class를 연결했다면 그렇게 어지럽지 않았을것같다.

다만 이 부분이 MVC패턴이 합쳐지고

class가 많아지는 순간 그냥 한방향으로만 호출 할 수 있도록 해야하지 않을까 생각이 든다..

반응형