형변환

2025. 3. 8. 00:10·Swift

형변환

1. as는 Upcasting

상속 관계가 있는 클래스들끼리만 타입 캐스팅이 가능하다.

자식을 부모로 캐스팅하는 것은 문제가 없음.

 

as 연산자를 이용한 타입 변환(type casting)

  • 자식 인스턴스 as 부모 클래스 (upcasting 안전한 캐스팅, 자식이 추상화됨)
  • 업캐스팅은 객체를 부모 클래스의 객체로 형 변환
  • 형 변환은 성공할 것이기 때문에 보장된 변환이다(guaranteed conversion)
  • UIBUtton은 UIControl의 자식 클래스이므로 안전하게 형 변환
  • let myButton: UIButton = UIButton()
  • let myControl = myButton as UIControl (자식 인스턴스 as 부모 클래스)
  • 자식 인스턴스인 myButton을 부모 클래스형으로 형 변환

자식은 부모로부터 상속 받아서 더 많은 것을 가지고 있습니다. 그래서 자식을 조금 잘라내고 추상화하면 부모를 얼마든지 만들 수 있거든요.

 

2. as! as?는 Downcasting

문제가 있는 것은 이 다운캐스팅이다. 부모를 자식으로 만드는 게 다운캐스팅인데요. 부모보다 자식이 더 큰데 이걸 다운캐스팅 하면 여기에 없는 게 있을 수도 있기 때문에 문제가 있을 수 있다.

다운 캐스팅 방법에는 as?와 as! 두가지가 있음. 둘 다 많이 쓰는데 as?가 더 좋음.

스위프트에서 느낌표는 확실하다 이런 느낌이고 물음표는 애매한 느낌.

 

as!부터 보자. 사용하는 법은

부모 인스턴스 as! 자식 클래스

이렇게 하면 부모 인스턴스를 자식 클래스로 확 바꿔버림. 성공이 안 되면 앱이 크래쉬가 나기 때문에

다운 캐스팅이 반드시 성공할 것이라는 확신이 있을 때 as!를 이용해서 부모인스턴스를 자식 클래스로 만들면 된다.

 

근데 부모가 자식으로 바뀔지 모르겠어 하면 as?로 하면 된다. 얘는 변환이 안 되면 nil을 리턴하고

자식 클래스로 변환이 되어도 옵셔널 타입으로 나오게 된다는 점이 있다.

 

바인딩 해야해서 귀찮지만 안정적으로 as?를 이용하자

 

타입 검사 is

is 키워드는 타입을 검사할 때 사용한다.

사용하는 법은 인스턴스 is 클래스 이렇게 앞에는 인스턴스 뒤에는 클래스를 써주면 된다.

아래는 예제.

if myObject is MyClass {
	//
}

인스턴스가 해당 클래스인지 검사하는 것으로 true/ false가 나오겠죵.

'Swift' 카테고리의 다른 글

Any, AnyObject  (0) 2025.03.08
옵셔널 (2)  (0) 2025.03.07
옵셔널 (1)  (0) 2025.03.06
[03] 1주차: 버튼과 텍스트를 사용하여 UI 실습  (1) 2025.03.05
[02] 1주차: 간단한 화면 구성  (0) 2025.03.05
'Swift' 카테고리의 다른 글
  • Any, AnyObject
  • 옵셔널 (2)
  • 옵셔널 (1)
  • [03] 1주차: 버튼과 텍스트를 사용하여 UI 실습
엽다고
엽다고
얼리지 않으면 상해버려
  • 엽다고
    개발 냉장고
    엽다고
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Computer organization(컴퓨터구조..
      • Swift
      • Godot
      • C++
      • Python
      • 디자인
        • HIG
        • 디자인 시스템
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    반복문
    타입검사
    논리 연산
    AnyObject
    EOF
    any
    swiftUI
    테이터 타입
    지마켓 디자인시스템
    앱개발
    Optional
    Swift 문법
    옵셔널 바인딩
    SWIFT
    코딩테스트
    파운데이션
    문자열 보간
    형변환
    옵셔널
    성능
    조건문
    implicitly unwrapped
    디자인시스템
    강제 언래핑
    코테
    암묵적인 언래핑
    C++
    컴포넌트
    가이드라인
    ios
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
엽다고
형변환
상단으로

티스토리툴바