본문 바로가기
Ios

as에 대해서 알아보자

by 잘먹는 개발자 에단 2024. 8. 16.

as

스위프트에서 as 키워드는 주로 타입 캐스팅에 사용됩니다.

 

3가지 형태로 주로 사용합니다.

as

as!

as?

 

 

사용되는 경우는 다음과 같습니다.

 

 

as

1. 업캐스팅

자식 클래스나 프로토콜을 부모 클래스나 프로토콜로 변환할 때 사용합니다. 

업캐스팅은 항상 안전하기 때문에 강제로 변환해도 됩니다.

class Animal {}
class Dog: Animal {}

let dog = Dog()
let animal: Animal = dog as Animal

 

 

2. 프로토콜 캐스팅

특정 클래스나 구조체가 특정 프로토콜을 준수한다는 것을 명시할 때 사용됩니다.

protocol Pet {}
class Cat : Pet {}

let pet : Pet = Cat() as Pet

 

 

3. 리터럴 값을 특정 타입으로 변환할때도 사용됩니다.

let number = 42 as Double
// Int -> Double

 

 

as?

옵셔널 타입 캐스팅(다운캐스팅)에 사용됩니다.

실패할 가능성이 있어서, 실패할 경우에 nil을 반환하고 성공하면 결과를 반환합니다.

결과는 옵셔널 타입입니다.

class Animal{}
class Dog{}
class Cat{}

let animal : Animal = Dog()

if let dog = animal as? Dog{
	print("This is a dog")
} else{
	print("This is not a dog")
}

여기서 animal이 Dog 타입으로 성공적으로 캐스팅되면 dog에 할당되며, 그렇지 않으면 nil이 반환됩니다.

 

as!

강제 타입 캐스팅에 사용되며 실패하면 런타임 에러를 발생시키므로, 정말 조심해서 사용합니다.

class Animal {}
class Dog: Animal {}
class Cat: Animal {}

let animal: Animal = Dog()

let dog = animal as! Dog  // 여기서 animal이 Dog이 아니면 런타임 오류 발생
print("This is definitely a dog.")

 

 

'Ios' 카테고리의 다른 글

클로저에 대해서 알아보자  (0) 2024.08.16
self에 대해서 알아보자  (0) 2024.08.16
struct 그리고 class  (0) 2024.08.16
DispatchQueue에 대해서 알아보자!  (0) 2024.08.16
async-await / try  (0) 2024.08.16