BOID
[iOS] 델리게이트 패턴이란? - HoonIOS 본문
안녕하세요 HoonIOS입니다. :)
이번에는 iOS의 하나의 디자인 패턴인 델리게이트 패턴에 대해 알아보려고 합니다.
우선 패턴에 대해 알아보겠습니다.
패턴이란?
객체지향 프로그래밍에서는 디자인 패턴으로 사용을 합니다.
그럼 디자인 패턴이 뭘까요?
프로그래밍 설계에 관한 문제를 해결하기 위한 해법으로 객체들의 관계를 구조화 한 사례가 일반화된 것이 디자인 패턴입니다.
만약 우리가 프로그래밍 하는데 설계 문제를 해결해야 한다면 디자인 패턴 중에서 적절한 것을 골라 그에 따라 프로그램을 구조화하면 쉽게 해결을 할 수 있습니다.
※ 디자인 패턴의 종류?
- iOS에서 사용하는 디자인 패턴은 MVVM, MVC가 대표적으로 있는데요,
- MVVM
- Model, View, View Model로 구성이 된것으로 하나의 프로그램은 디자인한 패턴이라고 생각을 하시면됩니다.
- 이 패턴은 VIew에 과중화된 코드를 분활하기 위해 사용하는 디자인 패턴입니다. - MVC
- Model, View Contoller로 구성된것입니다.
- 이패턴은 Model과 View Controller로 구성되었습니다.
델리게이트 패턴이란?
델리게이트의 가장 기초적인 basic of basic인 의미는 하나의 객체가 할일을 다른 객체가 하게 위임을 하는 방식입니다.
이렇게 다른 객체에게 할일을 넘기는 이유는 한 객체에 할 일을 과중화 되게 하는 것을 방지합니다.
그 결과 델리게이트 패턴은 효율적인 면에서 상당히 중요하게 됩니다.
기능을 위임할수 있다는 객체가 있다는 것은 그만큼 직접 구현해야 하는 부분이 적다는 의미가 됩니다. 따라서 큰 규모의 프로그램을 작성할 때 빠르게 작성할 수 있습니다.
( 추후에 설명을 하겠지만 델리게이트 메서드가 있어 이런 장점이 생기는 것입니다. )
GUI 기반 프로그램잉에서 가장 널리 사용하는 패턴입니다.
델리게이트 패턴의 가장 대표적인 예는 이벤트 리스너가 있습니다.
이벤트 리스너는 iOS에서 델리게이트 패턴은 기능을 처리할 객체를 델리게이트로 설정을 하고 특정 이벤트가 발생을 하면 이 이벤트를 델리게이트에 의해 위임된 본래의 객체로 전달해주는 기능을 합니다.
다시 말해 이벤트 리스너는 이벤트가 발생을 하면 델리게이트를 위임한 객체를 찾아 이런 이벤트가 발생했어요 라고 말하는 것과 같다고 하면 됩니다ㅎㅎ
그럼 위임 객체가 호출할 메서드를 우리가 직접 구현을 해야 할까요?
우리가 직접 구현을 하는 게 아닙니다.
어느 순간에 메서드를 호출하도록 프로토콜을 통해 델리게이트 메서드에 이미 약속이 되어있습니다. 따라서 적절한 순간의 메서드를 프로토콜에 정의된 형식에 따라 구현을 하면 됩니다. : )
( 흠 이상하죠 그냥 말로 설명하면은 이해가 안 될 수도 있습니다. UITextField의 델리게이트 메서드를 추후에 포스팅을 할 예정인데 그때 다시 보고 오시는 것도 나쁘지 않습니다. )
그러므로특정 이벤트가 발생했을 때 알려달라는 방법은 바로 미리 정의된 델리게이트 메서드를 사용하는 것입니다.
iOS에서 델리게이트 패턴을 사용하는 모든 객체는 델리게이트 메서드를 정의한 프로토콜을 가집니다.
델리게이트 프로토콜 구현
델리게이트 프로토콜을 구현할 때는 객체 이름 뒤에 delegate를 붙여 정의를 하면 됩니다.
객체 이름 + Delegate
우선 간단하게 델리게이트의 정의에 대해 알아봤습니다. :)
다음에는 텍스트 필드의 델리게이트에 대해 알아보고 구현을 하는 포스팅을 해보겠습니다.
델리게이트 패턴은 정말 중요하므로 정말 정말 중요합니다. 그러므로 꼭 읽어보시길 바랍니다.
'IOS 시작기' 카테고리의 다른 글
[iOS] 텍스트필드 델리게이트 패턴 구현하기 ( 2 / 2 ) -HoonIOS (0) | 2021.04.19 |
---|---|
[iOS] 텍스트필드 델리게이트 패턴 구현하기 ( 1 / 2 ) -HoonIOS (0) | 2021.04.19 |
[iOS] 텍스트 필드의 Text input traits특성 - HoonIOS (1) | 2021.04.17 |
[iOS] 텍스트 필드(textField 객체) 란? - HoonIOS (0) | 2021.04.17 |
[iOS] 받은 로컬알림 처리하기(UNUserNotificationCenterDelegate) - HoonIOS (0) | 2021.04.13 |