Any / AnyObject

썹스·2022년 10월 21일
0

Swift 문법

목록 보기
23/68

📌 Any

  • Swift에서 Any는 모든 데이터 타입(클래스, 구조체, 옵셔널 등등)을 표현할 수 있는 최상위 개념의 타입입니다.

  • 다른 타입에 비해 자료형의 크기가 크다는 단점을 가지고 있습니다. (32바이트)

  • Any 타입으로 저장된 데이터는 정확하게 어떤 메모리 구조로 이루어졌는지 알 수 없으므로 정확한 데이터타입(Int, String 등 명확한 데이터 타입)으로 타입 캐스팅(as)해서 사용하는 것이 좋습니다.

✅ 배열에 다양한 데이터 타입 할당하기

var num: Int? = 10
class A{
    var a: Int = 1
}


var anyArray: [Any] = [1, "hello", 3.5, A(), num]
                   // [Int, String, Double, A, Optional<Int>]

✅ Any타입의 타입캐스팅

var num: Int? = 10
class A{
    var a: Int = 1
}


var anyArray: [Any] = [1, "hello", 3.5, A(), num]

// anyArray[1].count    // Any 타입은 프로토콜, 함수 등의 기능을 사용할 수 없습니다.

(anyArray[1] as? String)!.count   //Any 타입을 String 타입으로 타입 캐스팅하여 사용해야 한다.

📌 AnyObject

  • Swift에서 AnyObject는 클래스 타입만 표현할 수 있는 타입이며, 모든 클래스가 암묵적으로 따르는 프로토콜입니다. (AnyObject는 사실 모든 클래스의 타입을 나타낼 수 있는 프로토콜이다.)

✅ 배열에 다양한 클래스 타입 할당하기

class A{
}
class B{
}
class C{
}


var ABC: [AnyObject] = [A(), B(), C()]  //AnyObject를 사용하면 각기 다른 타입의 인스턴스를 하나의 배열로 할당할 수 있습니다.


Reference

참고자료: 앨런 Swift문법 마스터 스쿨

profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글