조앤의 기술블로그

[iOS] Delegate Pattern 본문

Study/iOS

[iOS] Delegate Pattern

쬬앤 2020. 4. 14. 12:19

#1

iOS 개발에서 가장 중요한 패턴이다. 

이미지 출처 : KxCoding.com

하나의 객체는 다른 객체를 자신의 대리자로 지정한다. 그리고 자신이 제공하는 일부 기능을 대리자가 대신 수행하도록 일부 위임한다. 

즉, 기능을 처리할 객체를 델리게이트로 설정하고, 특정 이벤트가 발생할 때 이를 델리게이트에 의해 위임된 본래의 객체로 전달해주는 역할을 한다

 

delegate pattern의 대표적인 예는 테이블 뷰, TextField.

테이블뷰 항목을 선택했을 때, 실행해야 하는 기능은 천차만별. 테이블 뷰는 항목을 선택했을 때, 어떤 기능을 실행해야 하는지 모른다. 

-> 이 부분을 대리자가 대신 처리하도록 위임한다. 

 

이미지 출처 : KxCoding.com

delegate pattern에서는 두 개의 객체가 존재한다. 

기능을 위임하는 Table View / 테이블 뷰의 일부 기능을 대신 수행하는 Delegate Object

...dataSource

...delegate

와 같은 접미어를 가진 속성을 가지고 있다. (Table View 객체)

 

Delegate 객체는 테이블뷰가 호출하는 메소드를 구현한다. 

특정 시점에 호출되는 메소드는 프로토콜로 선언되어 있다. 

iOS에서 델리게이트 패턴을 사용하는 모든 객체는 델리게이트 메소드를 정의한 프로토콜을 가진다. 델리게이트 메소드를 이용하려면 델리게이트 프로토콜을 구현하는 과정이 반드시 필요하다. 

 

[구현방법]

1. 개발자 문서를 통해서 delegate 메소드가 필요한지 확인한다. , 구현되어 있는 프로토콜을 확인한다. 

2. 두 객체를 연결한다.

3. 프로토콜을 구현한다.

 

[역할]

1. 데이터를 공급

2. 이벤트를 처리

 

[왜 사용하는가]

개발유연성이 증가한다. 

 

 

 

 

참고: KxCoding.com, 꼼꼼한 재은씨 'Swift 기본편'

'Study > iOS' 카테고리의 다른 글

[iOS] Network Overview  (0) 2020.04.09
[오픈소스] FSCalendar 소개  (0) 2020.02.16