[iOS] Delegateion

승아·2021년 4월 13일
0

부스트코스-iOS 앱 프로그래밍

사전에 알아두면 좋을 것 (Java 기준)

1. 상속과 위임(delegation)의 차이 ( 참고 사이트 )

  • 상속
    - Is-A 관계
    - 결합도 강함
    - 부모 클래스가 바뀌면 자식 클래스에 영향
  • 위임
    - Has-A 관계
    - 결합도 약함
    - 보통 인터페이스로 구현

2. interface와 protocol의 차이 ( 참고 사이트 )

  • Interface
    - 파라미터의 초기값 설정가능
    - 선언된 모든 메소드 구현
    - static(정적 멤버) 선언할 수 없음
  • Protocol
    - 파라미터의 초기값 설정불가
    - optional 키워드를 통해 선택적으로 구현 가능
    - static(정적 멤버) 선언할 수 있음

✅⠀Delegation?

  • Delegate : 대표(자), 사절, 위임, 대리(자)

델리게이션 디자인 패턴(Delegation Design Pattern)

  • 델리게이션 디자인 패턴은 하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 기능을 제공
  • 델리게이션 디자인 패턴은 Foundation, UIKit, AppKit 그리고 Cocoa Touch 등 애플의 프레임워크에서 광범위하게 활용하고 있음.
  • 주로 프레임워크 객체가 위임을 요청하며, (주로 애플리케이션 프로그래머가 작성하는)커스텀 컨트롤러 객체가 위임을 받아 특정 이벤트에 대한 기능을 구현합니다.
  • 델리게이션 디자인 패턴은 커스텀 컨트롤러에서 세부 동작을 구현함으로써 동일한 동작에 대해 다양한 대응을 할 수 있게 해줍니다.

데이터소스(DataSource)

  • 델리게이트가 사용자 인터페이스 제어에 관련된 권한을 위임받고, 데이터소스는 데이터를 제어하는 기능을 위임받습니다.
  • UICollectionViewDataSource에서 데이터를 어떻게, 몇개 표시할지 구현

프로토콜(Protocol)

  • 코코아터치에서 프로토콜을 사용해 델리게이션과 데이터소스를 구현할 수 있습니다.
  • 객체간 소통을 위한 강력한 통신 규약으로 데이터나 메시지를 전달할 때 사용합니다.
  • 프로토콜은 특별한 상황에 대한 역할을 정의하고 제시하지만, 세부기능은 미리 구현해두지 않습니다.
  • 구조체, 클래스, 열거형에서 프로토콜을 채택하고 특정 기능을 수행하기 위한 요구사항을 구현할 수 있습니다.

0개의 댓글