전 포스팅인 타입캐스팅에 이어서 Any / AnyObject 에 대한 포스팅을 해보겠다악 악
[Swift] 타입캐스팅 : is, as
💡 타입캐스팅? - 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층(hierachy)에 있는 다른 superclass나 subclass로 취급하는 방법 is Checking Type 말 그대로, 특정 인스턴스의 타입을 확인할 수 있는
yexjinitlog.tistory.com
타입캐스팅은 일반적으로 상속관계에 있는 클래스끼리 가능하지만,
Any / AnyObject 타입을 이용할 경우, 상속관계에 상관없이 타입캐스팅이 가능하다
1️⃣ Any
- 모든 타입을 저장할 수 있게 해주는 타입
var anyThings: [Any] = []
anyThings.append(1)
anyThings.append("a")
anyThings.append("abc")
anyThings.append(1.1)
anyThings.append(true)
print(anyThings)
// [1, "a", "abc", 1.1, true]
→ 정말 그냥 모든 타입 다..!
2️⃣ AnyObject
- 모든 클래스 타입을 저장할 수 있게 해주는 타입
- 다른 타입들은 안되고, 모든 클래스 객체들을 저장할 때 사용할 수 있음!
class Human {
}
class Student {
}
var anyThings: [AnyObject] = []
anyThings.append(Human.init())
anyThings.append(Student.init())
print(anyThings)
// [practice.Human, practice.Student]
3️⃣ Any / AnyObject의 as 를 이용한 타입 매칭
for anyThing in anyThings {
switch anyThing {
case _ as Int :
print("Int")
case _ as String :
print("String")
case _ as Character :
print("Character")
case _ as Double :
print("Double")
case _ as Bool :
print("Bool")
default :
print("Something else")
}
}
// Int
// String
// String
// Double
// Bool
'Swift' 카테고리의 다른 글
[Swift] Protocol (0) | 2022.08.24 |
---|---|
[Swift] lazy? (0) | 2022.08.21 |
[Swift] 타입캐스팅 : is, as (0) | 2022.08.13 |
[Swift] 서브스크립트 (0) | 2022.08.13 |
[Swift] 상속 (0) | 2022.08.02 |