iOS 응용 (swift)
[iOS - swift] protocol에 사용되는 any 키워드 개념 (existential any, existential type)
jake-kim
2024. 1. 30. 01:43
Existential Type 개념
- * Existential: "존재하는"
- Existential Type는 protocol를 명시적으로 타입을 지정하는 경우, 그 protocol을 Existential Type이라고 명칭
- ex) 아래 SomeProtocol을 Existential Type이라고 명칭
let instance: SomeProtocol = SomeClass()
Existential Any 개념
- Existential Type을 사용할 때, dynamic dispatch가 일어나고 적지않은 메모리 할당 등 비용이 비싼 단점이 존재하여 프로그래머에게 Existential Type을 사용할땐 주의하게끔 any 키워드를 붙여서 사용하라는 의미
(비용관련 내용)

(any 키워드를 붙여야 하는 이유 - 실수 방지)

- 사용방법
- Existential Type 사용 시 앞에 any 붙이기
- (현재는 안써도 되지만 swift6.0부터 컴파일 에러 발생 예정)
let instance: any SomeProtocol = SomeClass()
protocol SomeProtocol {}
class SomeClass: SomeProtocol {}
* 참고