Menu
Menu
Posts List
  1. Swift:
    1. Protocol 이란?
    2. Delegate 이란?
    3. 차이점
    4. 정리

Protocol과 Delegate

Swift:

Protocol vs Delegate 차이점 정리

Swift에서 ProtocolDelegate는 밀접한 관계가 있으며, 객체 간 통신 및 책임 분리의 핵심 개념!
하지만 정확히 말하면 Delegate는 Protocol을 사용하는 하나의 디자인 패턴이라고 한다.
자세히 알기위해 포스트 작성!!


Protocol 이란?

  • 기능 을 정의하는 타입
  • 구현을 강제하지 않음 (선언만 함)
  • 클래스, 구조체, 열거형 등에서 채택 가능
    1
    2
    3
    protocol SomeProtocol {
    func doSomething()
    }

Delegate 이란?

  • Delegation Pattern 을 의미
  • 하나의 객체가 특정 작업을 다른 객체에 위임할 때 사용
  • 위임 대상은 보통 Protocol을 채택
  • iOS에서 많이 사용하는 설계 방식 (UITableViewDelegate, UITextFieldDelegate 등)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protocol MyDelegate: AnyObject {
    func didTapButton()
    }

    class ChildViewController {
    weak var delegate: MyDelegate?

    func buttonTapped() {
    delegate?.didTapButton()
    }
    }

차이점

항목 Protocol Delegate
정의 기능의 명세 Protocol을 활용한 설계 패턴
개념 추상화 위임 (Delegation)
역할 채택자가 구현할 인터페이스 특정 역할을 다른 객체에 위임
사용 대상 모든 타입 보통 클래스 간 통신
메모리 관리 상관없음 보통 weak으로 선언 (순환 참조 방지)

정리

  • Protocol은 단독으로도 사용 가능하지만,Delegate는 항상 Protocol을 기반으로 구성된다.
  • 즉, Delegate는 Protocol의 응용 사례 !!