Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- rxswift
- scrollview
- HIG
- ribs
- Clean Code
- combine
- swiftUI
- MVVM
- 리팩토링
- 리펙토링
- Human interface guide
- UICollectionView
- map
- SWIFT
- Observable
- UITextView
- Xcode
- swift documentation
- clean architecture
- Protocol
- uiscrollview
- Refactoring
- RxCocoa
- uitableview
- 클린 코드
- 애니메이션
- tableView
- collectionview
- 스위프트
- ios
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 프로토콜 타입을 사용할 때 자동완성 any 의미 (existential any, existential type) 본문
iOS 응용 (swift)
[iOS - swift] 프로토콜 타입을 사용할 때 자동완성 any 의미 (existential any, existential type)
jake-kim 2025. 4. 9. 01:24자동완성에 any가 생성되는 경우
- swift6.0부터 아래처럼 동작
- protocol이 2개가 있고, A에서 B프로토콜을 따르는 변수가 있을 때
protocol A {
var value: B { get }
}
protocol B {}
- A를 준수하려면 value 변수를 무조건 선언해주어야 하는데 이 때 자동완성을 사용하면 swift6.0부터 any가 자동으로 붙음
- 아래처럼 에러가 나고 fix버튼을 누르면 자동완성

- Fix를 누르면 자동으로 타입 옆에 any키워드가 등장 (swift6.0부터 동작)
- (이 any키워드를 지워도 정상 빌드됨)
struct MyStruct: A {
var value: any B
}
- swift6.0미만에서는 any키워드가 자동으로 등장하지 않았는데 swift6.0부터 재현이유?
any키워드의 의미
- any키워드는 말 그대로 어떤 타입이라던지 사용할 수 있다는 것인데, 타입 옆에 붙이면 그 타입을 준수하는 어떤 타입이라도 괜찮다는 의미
- 애플쪽에서 자동완성에서 any가 붙게 swift6.0부터 바꾼 이유는 "개발자에게 명시적으로 주는 비용이 든다는 것을 자각하게 하기위한 표현"
- (애플의 swift eveolution에 명시되어있는 내용)

- 프로토콜을 타입으로 두게되면 dynamic dispatch가 일어나서 성능에 영향을 주는 단점이 있기 때문에 이 경우에 any를 명시적으로 붙게 자동완성에 넣은 것
- 원래는 any를 붙이지 않으면 컴파일 에러가 발생하도록 설계하려고 했지만 지금은 옵셔널로 붙여놓을 수 있게 한 것
- 구체적인 내용은 이전 포스팅 글, protocol에 사용되는 any 키워드 개념 (existential any, existential type) 참고
'iOS 응용 (swift)' 카테고리의 다른 글
| [iOS - swift] 제네릭과 프로토콜 적절히 사용하는 방법 (프로토콜보다 제네릭이 좋은 점) (0) | 2025.05.28 |
|---|---|
| [iOS - swift] 중첩 case 처리 방법 (#case where) (0) | 2025.05.14 |
| [iOS - swift] deprecated 자동완성 fix 버튼 제공하기 (renamed) (3) | 2025.02.05 |
| [iOS - swift] private extension과 fileprivate extension 개념 (2) | 2025.01.30 |
| [iOS - swift] 키보드와 동시에 뷰 올리는 방법 (키보드와 특정 뷰 사이 거리 유지) (1) | 2025.01.09 |
Comments