728x90
비교하는 Generic Type이 class인 경우
public extension Array where Element == UIView {
func testable1() {
}
}
public extension Array where Element: UIView {
func testable2() {
}
}
- Element == UIVew
- 무조건 Element가 UIView여야 됨. (ex: Element가 UIControl, UIButton 이면 접근 불가)
- EX) var arr: [UIView]
- Element: UIView
- Element가 UIView를 상속받으면 됨 (ex: Element가 UIControl, UIButton 여도 접근 가능)
- EX) var arr: [UIView], var arr2: [UIControl]
UIView가 Element인 경우
testable1(), testable2() 모두 접근 가능
UIControl이 Element인 경우
testable2()에만 접근 가능
비교하는 Generic Type이 protocol인 경우
protocol Testable {
}
extension UIView: Testable {
}
extension Array where Element == Testable {
func testable1() {
print("should be Testable")
}
}
extension Array where Element: Testable {
func testable2() {
print("should conform Testable")
}
}
- Element == Testable
- 무조건 Element가 Testable여야 함 EX) Testable을 채택하는 UIView, UIControl 등은 접근 불가
- EX) var arr: [Testable]
- Element: Testable
- 무조건 Element가 Testable을 채택하는 구현체여야 함 EX) Testable이 Element인 경우는 접근 불가
- EX) var arr: [UIView]
Testable이 Element인 경우
testable1()에만 접근가능
UIView가 Element인 경우
testable2()에만 접근 가능
728x90
'Swift' 카테고리의 다른 글
[Swift] Extension에서의 Override (0) | 2022.10.01 |
---|---|
[Swift] Extension에 Stored Property를 못 넣는 이유 (0) | 2022.09.27 |
[Swift] JSON Decoding, Encoding (0) | 2022.09.05 |
[Swift] Swift Object Lifetime (0) | 2022.08.26 |
[Swift] Weak vs Unowned Reference (0) | 2022.08.20 |
댓글