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
- 클린 코드
- Protocol
- Refactoring
- clean architecture
- ios
- map
- swiftUI
- Human interface guide
- UICollectionView
- HIG
- uiscrollview
- 스위프트
- Xcode
- Clean Code
- 리펙터링
- rxswift
- collectionview
- 리펙토링
- SWIFT
- Observable
- 리팩토링
- RxCocoa
- combine
- 애니메이션
- ribs
- swift documentation
- uitableview
- UITextView
- tableView
- MVVM
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Metatype (메타 타입), generics (제네릭) 본문
파라미터에 타입을 받고 싶은 경우?
- 함수 파라미터로 instance로 받는 예제
printType(of: "123") // 123
func printType<T>(of instance: T) {
print(instance)
}
- 함수 파라미터로 type을 받고 싶은 경우 - metatype사용
- type(of:): 파라미터는 인스턴스이고, 반환값은 타입
- T.Type: 인스턴스가 아닌 타입
printType(of: type(of: "123")) // String
func printType<T>(of instance: T.Type) {
print(instance)
}
- Metatype이 있어야 하는 이유: 함수 내에서 타입을 파라미터로 받아서 캐스팅이 필요한 경우, switch로 타입값을 구분해야하는 경우
Metatype
- 타입의 타입
- SomeClass의 메타타입은 SomeClass.Type
- 메타타입 접근: 타입.self
- cf) type(of:) 메소드는 인스턴스의 타입을 리턴
- 메타타입 이용: 타입의 타입을 얻고싶은 경우
printType(of: String) // compile error
printType(of: String.self)
func printType<T>(of type: T.Type) {
print(type)
}
Static Metatype - .self의 의미
- 컴파일 타임에서 object type
- SomeClass.SomeStaticFunc() 호출에서 사실상 .self가 생략된 형태: SomeClass.self.SomeStatisFunc()와 동일
- TableView.register코드에서 .self 사용
tableView.register(MyTableViewCell.self, forReuseIdentifier: "myCell")
Dynamic Metatype - type(of:)
- instance를 파라미터로 받고 해당 instance의 type을 반환
let myNum: Any = 1 // 컴파일 타임에는 타입이 Any지만 런타임에는 타입이 Int
type(of: myNum) // Int.type
self와 Self의 차이
'iOS 기본 (swift)' 카테고리의 다른 글
[iOS - swift] semantic, 버튼안의 내용 정렬 (0) | 2021.02.06 |
---|---|
[iOS - swift] AppDelegate 참조 방법 (0) | 2021.01.31 |
[iOS - swift] 화면 전체의 Interaction을 off, on 방법 (0) | 2021.01.24 |
[iOS - swift] UIWindow, makeKeyAndVisible() (0) | 2021.01.24 |
[iOS - swift] nib, xib, Placeholders, Files's Owner, First Responder, Responder Chain 개념 (0) | 2021.01.23 |
Comments