Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] protocol에 사용되는 any 키워드 개념 (existential any, existential type) 본문

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 키워드를 붙여서 사용하라는 의미

(비용관련 내용)

https://github.com/apple/swift-evolution/blob/main/proposals/0335-existential-any.md?source=post_page-----ef0ce6bc7bc2--------------------------------

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

https://github.com/apple/swift-evolution/blob/main/proposals/0335-existential-any.md?source=post_page-----ef0ce6bc7bc2--------------------------------

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

protocol SomeProtocol {}
class SomeClass: SomeProtocol {}

* 참고

- https://github.com/apple/swift-evolution/blob/main/proposals/0335-existential-any.md?source=post_page-----ef0ce6bc7bc2--------------------------------

 

Comments