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 |
Tags
- UITextView
- swiftUI
- ios
- Refactoring
- Observable
- uitableview
- map
- UICollectionView
- swift documentation
- 클린 코드
- HIG
- Xcode
- Human interface guide
- 리펙터링
- 리팩토링
- ribs
- 리펙토링
- uiscrollview
- collectionview
- Clean Code
- rxswift
- tableView
- 애니메이션
- clean architecture
- combine
- 스위프트
- Protocol
- MVVM
- RxCocoa
- SWIFT
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Protocol 확장에서 프로퍼티 치환 방법, 프로토콜 프로퍼티 이름 중복 해결 (#@_implements) 본문
iOS 응용 (swift)
[iOS - swift] Protocol 확장에서 프로퍼티 치환 방법, 프로토콜 프로퍼티 이름 중복 해결 (#@_implements)
jake-kim 2023. 10. 26. 01:32Protocol 프로퍼티 치환
- 일반적으로 protocol에서 프로퍼티를 선언하면, 이 프로토콜을 준수하는 쪽에서 똑같은 프로퍼티 이름으로만 접근이 가능
protocol SomeProtocol {
var myProperty: Int { get }
}
struct SomeStruct: SomeProtocol {
var myProperty: Int
}
만약 프로퍼티 이름이 다르면 컴파일 에러 발생)
- @_implements를 사용하면 다른 이름으로 사용이 가능
@_implements 키워드
- @_implements(ProtocolName, propertyName)으로 프로퍼티 위에 선언하여 사용
struct SomeStruct2: SomeProtocol {
@_implements(SomeProtocol, myProperty)
var myProperty2: Int // ok
}
- 만약 여러개의 프로토콜을 준수하는데, 프로퍼티 이름이 중복될때도 이 방법을 사용하여 이름 중복 문제를 해결이 가능
ex) 프로토콜 두 개가 존재 (프로퍼티 이름은 같지만 Type이 다른 상태)
protocol SomeProtocol {
var myProperty: Int { get }
}
protocol OtherProtocol {
var myProperty: String { get }
}
- 이 두 프로토콜을 준수하면 이름 중복으로 인해 컴파일 에러 발생
- @_implements를 사용하면 프로퍼티 이름뿐만이 아닌 프로토콜 분리가 가능하기 때문에 아래처럼 사용이 가능
struct SomeStruct3: SomeProtocol, OtherProtocol {
@_implements(SomeProtocol, myProperty)
var p1: Int
@_implements(OtherProtocol, myProperty)
var p2: String
}
* 참고
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] UITextView의 cursor 다루기 (NSRange, location, length) (0) | 2023.10.29 |
---|---|
[iOS - swift] NSRange 개념 (location, length) (0) | 2023.10.28 |
[iOS - swift] \u{200B} 문자열 (Zero Width Space) (0) | 2023.10.25 |
[iOS - swift] 2. 특정 문자열 사이 간격 조절 방법 (#lineSpacing 고급) (2) | 2023.10.24 |
[iOS - swift] 1. lineSpacing, lineHeight 개념 (#baselineOffset) (2) | 2023.10.23 |
Comments