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
- Snapshot
- divider
- Swift
- swift 문법
- controller
- globalkey
- switch
- runTransaction
- reference
- platformexception
- 문법
- transform
- borderRadius
- Navigator
- datetime
- changenotifierprovider
- multiprovider
- snackbar
- Camera
- user
- enum
- setstate
- consumer
- provider
- Firebase
- permission
- signout
- Stream
- changenotifier
- ListView.builder
Archives
- Today
- Total
코딩하는 제리
[Swift] swift 형변환 본문
// 상속 관계가 있는 클래스들끼리만 타입 캐스팅 가능.
// upcasting (자식 as 부모)
// 자식이 부모로부터 상속받아 더 많은 것을 가지고 있으면 부모로 캐스팅하는 것은 문제 없음.
// as 연산자를 이용한 타입 변환(type casting)
// - 자식인스턴스 as 부모클래스 (upcasting (안전한 캐스팅). 자식이 추상화 됨.
// - 업캐스팅은 객체를 부모 클래스의 객체로 형변환.
// - 형변환은 성공할 것이기 때문에 보장된 변환.
// 자식인스턴스인 myButton을 부모 클래스형으로 형변환.
let myButton: UIButton = UIButton()
let myControl = myButton as UIControl // 자식인스턴스 as 부모 클래스.
// downcasting (부모 as 자식)
// 어떤 클래스에서 다른 클래스로 변환할 때 안전한 변환을 보장할 수 없음.
// 유효하지 않은 형변환이 이루어졌는데 컴파일러가 에러를 잡지 않았다면, 런타임에서 에러 발생.
// 주로 자식클래스로 변환하는데 사용.
// 성공 확신이 있으면 as! 키워드를 사용하여 강제 변환. (변환 안되면 crash)
// 성공 확신이 없으면 as? 키워드를 사용하여 안전하게 변환. (변환 안되면 옵셔널 타입으로 nil 반환)
// 부모인스턴스 as! 자식클래스 (성공 확신이 있을 때)
// 부모인스턴스 as? 자식클래스 (성공 확신이 없을 때, 반환 값이 없으면 결과 옵셔널 nil)
// as? 를 많이 사용.
'iOS > SwiftUI' 카테고리의 다른 글
[Swift] guard 문 (조건이 거짓이면 실행) (0) | 2022.01.12 |
---|---|
[Swift] 타입 검사, 범위 연산자, nil 합병 연산자 (0) | 2022.01.12 |
[Swift] swift 옵셔널 (0) | 2022.01.07 |
[Swift] swift 튜플 (0) | 2022.01.07 |
[Swift] swift 클로저 캡쳐 (0) | 2022.01.07 |
Comments