간략한 스위프트 문법/사용법 정리
🧐 프로토콜(Protocol)
프로토콜(Protocol)은 특정 기능 수행에 필수적인 요소를 정의해놓은 규격을 말한다.
반드시 구현해야 하는 요구사항을 정의해놓는 청사진이라고 할 수 있다.
(Java의 추상 클래스나 interface와 비슷한 역할을 한다고 이해할 수 있을 것 같다.)
📎 생성 방법
protocol Talkable {
// property
var topic: String { get set }
var language: String { get }
// 상수(let)는 사용할 수 없다.
// let sound: Int { get set } // Error
// Method
func talk()
// Initializer
init(topic: String, language: String)
}
- 프로토콜 내부에 명시되어 있는 프로퍼티, 메서드, 생성자 등을 "요구한다"라고 표현할 수 있다.
- 프로퍼티는 반드시 var 키워드를 사용한다.
- { get } : set이 생략되어 있는 문법으로, "읽기만 가능해도 상관없다"는 의미이며 프로토콜을 채택한 하위 클래스/구조체에서 상수(let)로 구현할 수 있음을 의미한다.
- { get set } : "읽기/쓰기 모두 구현해야 한다"는 의미이다.
📎 구현(채택) 방법
struct Person: Talkable {
var topic: String
let language: String // {get} => 상수로 선언 가능.
func talk() {
print("\(topic)에 대해 \(language)로 말합니다.")
}
init(topic: String, language: String) {
self.topic = topic
self.language = language
}
}
var person: Person = Person(topic: "Swift", language: "한국어")
person.talk()
// 출력: Swift에 대해 한국어로 말합니다.
프로토콜을 구현한 객체에 대해 "프로토콜을 채택 했다" 또는 "프로토콜을 준수(confirm)한다"라고 표현할 수 있다.
📎 프로토콜 상속 / 다중 채택
프로토콜이 프로토콜을 상속받을 수도 있고, 프로토콜을 채택하는 객체는 여러 개의 프로토콜을 동시에 구현할 수도 있다.
// 프로토콜 상속
protocol Readable {
func read()
}
protocol Writeable {
func write()
}
protocol ReadSpeakable: Readable {
// func read() // 명시하지 않아도 된다.
func speak()
}
protocol ReadWriteSpeakable: Readable, Writeable {
func speak()
}
// 다중 채택
struct Person: Talkable, Readable, Writeable {
...
}
[예시 코드 출처]
1. 야곰님의 유튜브 강의
'iOS(macOS) > Swift' 카테고리의 다른 글
[iOS/Xcode 13] 시뮬레이터 키보드 보이게 하는 법 (0) | 2022.08.15 |
---|---|
[Swift/문법] 고차함수 (Higher-order function) (0) | 2022.08.11 |
[Swift/문법] 익스텐션(Extension) (0) | 2022.08.10 |
[Swift/문법] 클래스(Class), 구조체(Structure) (0) | 2022.08.10 |
[Swift/문법] Enumerations (enum, 열거형) (0) | 2022.08.09 |