본문 바로가기

Swift

[Swift] Any / AnyObject

전 포스팅인 타입캐스팅에 이어서 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