소피it블로그

[Swift] 100 Days of Swift - Day 11 정리 본문

개발_iOS/스위프트

[Swift] 100 Days of Swift - Day 11 정리

sophie_l 2022. 3. 29. 23:42

https://www.hackingwithswift.com/100/11

 

Day 11 – 100 Days of Swift

Follow the 100 Days of Swift and learn to build apps for free.

www.hackingwithswift.com

프로토콜이라는 개념이 너무 생소해서 한 번 강의를 보고 문제를 풀었는데도 아직 틀리는 문제가 많다. 앞으로 프로토콜을 만날 때마다 돌아와서 차근차근 복습해야할 것 같다. 그러다보면 언젠가는 익숙해지겠지.

강의 뒤에 문제를 열 두개씩 푸는 방법은 하다보니 오히려 강의만 듣고 복습하는 것보다 학습에 도움이 많이 되는 것 같아 긍정적인 마음으로 풀고 있다. 이제 내일 옵셔널만 하면 기초 문법은 끝인 것 같은데 그 뒤로 이어지는 수많은 프로젝트들이 기대도 되고 걱정도 된다.

 

⭐️ 1. 프로토콜: 어느 타입이 어떠한 메서드와 프라퍼티를 가질지를 알려줌. 프로토콜의 인스턴스는 바로 만들어내지 못하지만 해당 프로토콜에 순응하는 구조체를 만들어줄 수는 있다.

protocol Identifiable {
	var id: String { get set }
}

struct User: Identifiable {
	var id: String
}

get: can be read

set: can be written

there is no set-only properties

 

⭐️ 2. 프로토콜 상속: 클래스에서처럼 다른 프로토콜을 상속할 수 있는데, 차이점은 여러 개의 프로토콜로부터 상속받을 수 있다는 점이다.

protocol SuperOne { }
protocol SuperTwo { }
protocol SuperThree { }

protocol SubProtocol: SuperOne, SuperTwo, SuperThree { }

⭐️ 3. 익스텐션: 특정 타입에 메서드나 프라퍼티를 추가해줄 수 있는 기능. 해당 타입이 원래 가지고 있지 않던 기능들을 수행할 수 있게 해준다.

extension Int {
	func squared() -> Int {
		return self * self
	}
}

let number = 8
number.squared()

extension Int {
	var isEven: Bool {
		return self % 2 == 0
	}
}

// 익스텐션에는 stored property는 추가할 수 없다. computed properties만 가능

⭐️ 4. 프로토콜 익스텐션: 프로토콜은 어떤 메서드와 프라퍼티를 가지는지는 명시해주지만 해당 메서드들의 구현은 하지 않는다. 반면 프로토콜 익스텐션은 프로토콜에 메서드와 computed properties를 추가할 수 있게 해준다. 즉, 프로토콜은 메서드 구현을 할 수 없지만 프로토콜 익스텐션에서는 가능.