나만의 공부 노트

프로토콜과 익스텐션에 관하여 본문

정리 X/Swift

프로토콜과 익스텐션에 관하여

va95 2021. 2. 5. 23:49

프로토콜은 타입이다! (인터페이스이기도 하지만 타입의 역할이 더 중요한 듯)

 

 

class, enum, struct에 사용 가능하고 extension으로 확장도 가능하다

프로토콜을 extension 시에 extension은 함수의 body를 구현해야한다 -> 모순이지 않는가? (인터페이스잖아!)

하지만 이렇게 하지 않으면 기존에 프로토콜을 쓰던 애들은 갑자기 생겨버린 함수에 다 깨져버리는걸 ㅜ

그렇기에 이번만큼은.. 프로토콜이 extension으로 구현한 함수의 body를 default로 받아들여준다

 

 

프로토콜은 {get}, {get set} 만 가능(저장 프로퍼티인지 계산 프로퍼티인지는 명시 안해도 됨)

익스텐션은 계산 프로퍼티만 가능 -> 저장 프로퍼티를 사용하면 init에서 문제가 발생할 수 있기에(위에 함수에서처럼 문제 나것제!)

 

 

mutating 키워드는 값 프로퍼티일 때 사용(struct, enum), 기본적으론 한번 구현된 값 프로퍼티는 내부 변수 값 변경 불가능

-> 따라서 mutating func 사용시 새로운 값 프로퍼티를 만들고 기존에 프로퍼티와 바꾸는 형식으로 구현되어 있음

'정리 X > Swift' 카테고리의 다른 글

열거형에 관하여  (0) 2021.02.14
변수의 키워드에 관하여  (0) 2021.02.05
이니셜라이저의 키워드에 관하여  (0) 2021.02.05
클로저(메모리)에 관하여  (0) 2021.02.05
변수의 키워드(메모리)에 관하여  (0) 2021.02.05