[iOS] Protocol & Delegate in Swift

SeonDal·2021년 11월 10일
0

⛳️ Protocol

A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality.

: 특정 직업이나 기능들을 구현하기 위한 메소드, 프로퍼티, 이니셜라이저 등의 요구사항들의 청사진

  • 채택 (Adopt) : 구조체, 클래스, 열거형이 프로토콜의 요구사항을 실제로 구현하는 것
  • 프로토콜의 요구사항을 충족시키다 = 프로토콜이 제시하는 기능을 모두 구현하다
import Swift

protocol 프로토콜이름 {
	var 변수명 : 변수타입 { get set }
}

요구사항

프로퍼티 요구

var 변수명 : 변수타입 { get }
var 변수명2 : 변수타입 { get, set} 

get : 읽기
set : 쓰기

  • set 하나만? ㄴㄴ!

메서드 요구

func 메소드명()

이니셜라이저 요구

init(프로퍼티명 : 타입, 프로퍼티명2 : 타입)

채택 & 준수

프로퍼티 채택

struct 구조체 : 프로토콜명 {
	var 변수명 : 타입
    let 변수명 : 타입
}

메소드 채택

func 메소드() {
	print("\(변수명) 어쩌구~~")
}

이니셜라이저 채택

init(변수명: 타입, 변수명2 : 타입2) {
	self.변수명 =self.변수명2 =2
}

상속

: 클래스와 달리 다중 상속 가능

protocol 프로토콜이름 : 상속받을프로토콜, 상속받을프로토콜2 {
}

상속이랑 채택 한번에 하는 클래스

class 클래스명: 상속받을클래스, 채택할프로토몰1, 채택할프로토콜2 {
}

https://shark-sea.kr/entry/swift-delegate%ED%8C%A8%ED%84%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0


⛳️ Delegation

클래스나 구조체가 다른 타입의 인스턴스에게 책임을 위임해줄 수 있게 해주는 디자인 패턴

  • 위임된 기능은 프로토콜에서 정의
  • delegate : 위임된 기능을 제공

Delegation 적용하는 법

1. 요구사항 파악

: 프로토콜에 의해 나열된 규칙 = 함수 시그니쳐들의 집합
해당 프로토콜을 따르게 된다면 반드시 구현해야하는 함수

2. 프로토콜 채택

: 클래스 뒤에 프로토콜 작성

class 클래스명 : 프로토콜이름

3. 객체와 연결

: 함수 구현 전에 어떤 객체로부터 주어졌는지 명시하기

override func viewDidLoad() {
        super.viewDidLoad()

        클래스명.delegate = self
}

-> 프로토콜이 제공하는 함수들 사용 가능해짐

4. 요구사항 구현

: 프로토콜의 함수들 구현하기


MVC Pattern

  • Model
  • View
  • Controller

profile
김선달 개발블로그

0개의 댓글