꾸준히 안타치기
Delegation이란? 본문
Delegation
델리게이션에 대해 자세히 살펴보기 전에, Delegate의 사전적 의미를 알아두면 내용을 이해하는 데 도움이 됩니다.
Delegate: [명사] 대표(자), 사절, 위임, 대리(자)
[동사] (권한, 업무 등을) 위임하다, (대표를) 선정하다
델리게이트란?
하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 것을 의미
객체가 해야할 일을 부분적으로 확장하여 대신해서 처리를 해준다.
하나의 객체가 모든일을 처리하는 것이 아니라 처리해야할 일 중의 일부를 다른 객체에 넘기는 것을 말한다.
그 업무를 잘하는 사람에게 일을 대신해달라고 요청하는 것
델리게이트는 쓰면 뭐가 좋은가?
기능을 위임할 수 있는 객체가 있다는 것은 그만큼 직접 구현해야하는 부분이 적다는 뜻 -> 효율성이 높다.
큰 규모의 프로그램을 빠르게 작성할수 있다.
델리게이트는 왜 쓰나?
델리게이트는 특정한 상황에 대리자에게 메시지를 전달하고, 응답을 받기 위한 목적으로 사용된다.
처리하라고 시키는 객체 (프레임워크 객체 ) | --- 요청 ->>>> | 대신 처리해줄 객체 (ViewController ) 요청을 받아 기능을 구현함 |
https://magi82.github.io/ios-delegate/
iOS Delegate 패턴에 대해서 알아보기 – 마기의 개발 블로그 – 즐겁게 개발을 하고 싶은 욕심 많은
안녕하세요. 마기입니다. 이번 포스팅에서는 델리게이트에 대해 살펴보도록 하겠습니다. iOS 에서 델리게이트 패턴은 정말 많이 쓰이고 있습니다. 많이 쓰이는 필수 패턴이니만큼 구글링을 해보
magi82.github.io
델리게이션 디자인 패턴(Delegation Design Pattern)
Delegate라는 단어의 뜻에서 예측할 수 있듯이,
델리게이션 디자인 패턴은 하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 기능을 제공합니다.
- 델리게이션 디자인 패턴은 Foundation, UIKit, AppKit 그리고 Cocoa Touch 등 애플의 프레임워크에서 광범위하게 활용하고 있습니다.
- 주로 프레임워크 객체가 위임을 요청하며, (주로 애플리케이션 프로그래머가 작성하는)커스텀 컨트롤러 객체가 위임을 받아 특정 이벤트에 대한 기능을 구현합니다.
- 델리게이션 디자인 패턴은 커스텀 컨트롤러에서 세부 동작을 구현함으로써 동일한 동작에 대해 다양한 대응을 할 수 있게 해줍니다.
// 대리자에게 특정 텍스트 필드의 문구를 편집해도 되는지 묻는 메서드
func textFieldShouldBeginEditing(UITextField)
// 대리자에게 특정 텍스트 필드의 문구가 편집되고 있음을 알리는 메서드
func textFieldDidBeginEditing(UITextField)
// 특정 텍스트 필드의 문구를 삭제하려고 할 때 대리자를 호출하는 메서드
func textFieldShouldClear(UITextField)
// 특정 텍스트 필드의 `Return` 키가 눌렸을 때 대리자를 호출하는 메서드
func textFieldShouldReturn(UITextField)
기본기능은 델리게이트 패턴없이도 사용할수 있지만,
입력값을 제어 하거나, 특정문자열의 배제, 입력 가능한 문자열 길이 제한등을 처리할때 델리케이트 패턴을 통해 처리한다.
데이터소스(DataSource)
- 델리게이트와 매우 비슷한 역할을 하는 데이터소스가 있습니다.
- 델리게이트가 사용자 인터페이스 제어에 관련된 권한을 위임받고, 데이터소스는 데이터를 제어하는 기능을 위임받습니다.
프로토콜(Protocol)
- 코코아터치에서 프로토콜을 사용해 델리게이션과 데이터소스를 구현할 수 있습니다.
- 객체간 소통을 위한 강력한 통신 규약으로 데이터나 메시지를 전달할 때 사용합니다.
- 프로토콜은 특별한 상황에 대한 역할을 정의하고 제시하지만, 세부기능은 미리 구현해두지 않습니다.
- 구조체, 클래스, 열거형에서 프로토콜을 채택하고 특정 기능을 수행하기 위한 요구사항을 구현할 수 있습니다.
https://www.boostcourse.org/mo326/lecture/16856?isDesc=false
iOS 앱 프로그래밍
부스트코스 무료 강의
www.boostcourse.org
'iOS > Basic Study' 카테고리의 다른 글
URLSession과 URLSessionDataTask (0) | 2021.12.27 |
---|---|
OperationQueue (0) | 2021.12.26 |
tableView +Json 데이터 파싱 (0) | 2021.12.23 |
Target-Action 디자인 패턴 (0) | 2021.12.21 |
뷰의 상태변화 감지 메서드 (0) | 2021.12.19 |