1️⃣ Protocol (프로토콜)
역할
- 타입이 반드시 가져야 할 속성과 메서드의 “약속”
- Class / Struct / Enum 모두 채택 가능
protocol CalorieCountable {
var calories: Int { get }
func description() -> String
}
핵심 포인트
- 구현 ❌, 요구사항만 정의
- { get } → 읽기 전용
- { get set } → 읽기/쓰기
2️⃣ Protocol 채택 (Conformance)
Class / Struct에서 직접 채택
class Burger: CalorieCountable { ... }
struct Fries: CalorieCountable { ... }
- 요구된 모든 프로퍼티/메서드 구현 필수
- var 요구 → let 구현 가능 (get-only)
3️⃣ Extension (확장)
목적
- 기존 타입 수정 없이 기능 추가
- 프로토콜 채택 가능
class ExistingType {
property1
method1()
}
extension ExistingType : ProtocolName {
property2
method2()
}
특징
- Apple 제공 타입도 확장 가능
- 코드 분리로 가독성 ↑
4️⃣ Enum + Protocol
- Enum은 저장 프로퍼티 ❌
- 계산 프로퍼티 + switch 사용
var calories: Int {
switch self { ... }
}
5️⃣ Protocol 타입 배열 (다형성)
let foodArray: [CalorieCountable] = [burger, fries, sauce]
의미
- 서로 다른 타입을 하나로 묶음
- 공통 인터페이스 기반 처리
6️⃣ reduce 사용 예
let total = foodArray.reduce(0) { $0 + $1.calories }
- 배열 → 단일 값 계산
7️⃣ Error Handling (에러 처리)
Error 타입
enum WebsiteError: Error { ... }
- 보통 Enum 사용
throw / throws
func f() throws { throw ErrorType }
- 오류 발생 시 실행 중단
do – try – catch
do {
try f()
} catch {
print(error)
}
- 프로그램 크래시 방지
- 에러 대응 로직 작성
'Programming Languages > Swift' 카테고리의 다른 글
| Concurrency (0) | 2025.12.26 |
|---|---|
| Class / Struct (0) | 2025.12.26 |
| Functions (함수) / Closures (0) | 2025.12.26 |
| Swift / C++ Collection Types 비교 (0) | 2025.12.26 |
| Swift vs C/C++ 문법 비교 (0) | 2025.12.19 |