A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality.
: 특정 직업이나 기능들을 구현하기 위한 메소드, 프로퍼티, 이니셜라이저 등의 요구사항들의 청사진
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
클래스나 구조체가 다른 타입의 인스턴스에게 책임을 위임해줄 수 있게 해주는 디자인 패턴
: 프로토콜에 의해 나열된 규칙 = 함수 시그니쳐들의 집합
해당 프로토콜을 따르게 된다면 반드시 구현해야하는 함수
: 클래스 뒤에 프로토콜 작성
class 클래스명 : 프로토콜이름
: 함수 구현 전에 어떤 객체로부터 주어졌는지 명시하기
override func viewDidLoad() {
super.viewDidLoad()
클래스명.delegate = self
}
-> 프로토콜이 제공하는 함수들 사용 가능해짐
: 프로토콜의 함수들 구현하기