프로토콜이란?
클래스가 충족해야하는 최소한의 요구사항을 정의(구현X)하는 규칙들의 집합
클래스가 구조적으로 올바르게 되기 위하여 스위프트 클래스가 반드시 따라야할 특정 규칙은 기본적으로 없지만, 다른 클래스와 함께 작업을 할 때는 특정 조건을 맞춰야 한다.
특히 다양한 프레임워크와 함께 동작하는 클래스를 만들 때는 더욱 그러하다.
이때 클래스가 충족해야하는 최소한의 요구사항을 정의해둔 규칙들의 집합을 프로토콜이라 한다.
해당 클래스가 프로토콜을 따르지 않으면 에러가 발생한다.
protocol Sendable {
var from: String? { get }
var to: String { get }
func send()
}
protocol Student {
var height: Double { get set }
static var schoolNumber: Int { get set }
var name: String { get }
}
class Jack: Student {
var roundingHeight: Double = 0.0
var height: Double {
get {
return roundingHeight
}
set {
roundingHeight = 183.0
}
}
var name: String = "Jack"
static var schoolNumber: Int = 123456
}
let jack = Jack()
print(jack.height, jack.name, jack.schoolNumber)
// 0.0 Jack 123456
protocol Person {
static func breathing()
func sleeping(time: Int) -> Bool
mutating func running()
}
struct Jack: Person {
var heartRate = 100
static func breathing() {
print("숨을 쉽니다")
}
func sleeping(time: Int) -> Bool {
if time >= 23 {
return true
} else {
return false
}
}
mutating func running() {
heartRate += 20
}
}
print(Jack.breathing())
// 숨을 쉽니다.
var jack = Aiden()
print(jack.sleeping(time: 23))
// true
print(jack.heartRate)
// 100
jack.running()
print(jack.heartRate)
// 120