Delegate 패턴

JG Ahn·2024년 11월 29일
0

iOS

목록 보기
6/32
post-thumbnail

팀 프로젝트를 하면서 UITableView를 구현하기 위해 viewController와 연결해줄 때 delegate라는 것을 사용했다. 프로젝트 중에는 delegate가 어떻게 동작하는지 알지 못 한 채 구현했었기 때문에 다시 알아보려고 한다.

delegate 패턴

delegate의 단어 뜻은 대리인, 위임하다 이다. delegate 패턴은 의미 그대로 객체가 자신이 처리해야 할 일을 다른 객체에게 위임한다. 이번에 다뤘던 테이블뷰 외에도 더 많은 UI들이 delegate 패턴을 사용하고 있다. 그렇다면 왜 사용하는 것일까?

이번에 프로젝트에서 사용했던 코드를 가져왔다.

1. 프로토콜과 메소드 정의
delegate를 설정할 뷰 파일에 코드를 작성했다.

2. 컨트롤러에 delegate 객체 생성
controller에 직접 delegate를 채택하거나 extension으로 채택하면 된다.
UITableViewDelegate에서 객체를 생성해준다.(UITableViewCellDelegate를 채택한 곳 ❌)
cell.delegate = self 에서 self는 컨트롤러 객체를 의미하며, cell 객체의 delegate(대리인)로 동작할 수 있게 된다.

3. 뷰 객체 생성
먼저, delegate를 선언해준다. 여기서 weak로 선언하는 이유는 메모리 누수를 방지하기 위함이다.

  • UIViewController 🔄 UITableViewCell : 현재 코드에서는 이렇게 둘이 서로 참조하면서 강한순환참조(Strong Reference Cycle)가 발생할 수 있다. 그래서 weak키워드로 약한참조가 되게 만든다.

그리고 delegate로 연결된 버튼의 메소드를 정의해주었다.

4. 컨트롤러에서 delegate로 연결된 메소드 사용
뷰에서 정의한 메소드들을 UITableViewCell과 연결된 delegate를 채택한 컨트롤러에서 작성해 주었다.

0개의 댓글