Swift

Swift | AnyObject / Any란?

ziziDev 2024. 5. 14. 21:30
반응형

안녕하세요!

오늘은 AnyObject에 대해서 알아보고자 합니다

 

공부하는데 질문이 올라오게됩니다

 

Dictionary<String, AnyObject>()

value에 아무값이나 와도 된다는건가요??

 

정답

맞습니다

 

하지만 사용할 수 있는 범위가 있는데 제가 잘못알고 있더라구요

 

흑흑

반대로 알고 있던 나자신.. 하지만 이렇게 잘못된 점에 대해서 알게되어서

무척 기뻤답니다

 

저는 클래스가 아닌 구조체나 enum이 anyobject범주에 속하는 줄 알았지만

아니더라구요

 

enum이나 구조체는 any라는 데이터에 담길 수 있지만

AnyObject는 클래스에서 생산된것들에 대해서 가능하답니다

 

조원분이 명확한 이미지를 가지고 와서 단번에 이해했답니다!

 

   
Any ✏️'Any'는 값과 참조타입을 모두 포함한 모든 타입의 인스턴스를 나타냅니다
✏️모든 타입을 나타내는 프로토콜이며
✏️어떤 타입이든 상관없으니 받아들여라는 의미입니다
✏️타입 안정성이 없기 때문에 주의해서 사용해야합니다
📕 다양한 타입을 다루는 함수나 변수 / 모든 타입 Any 사용가능(값타입)
AnyObject ✏️ 모든 클래스 타입의 인스턴스를 나타내는 프로토콜입니다
📕 클래스 인스턴스에 대한 참조 / 주로 Objective-C와 상호 운용성을 위해 사용(참조타입)
NSObject ✏️Objective-C에서 모든 객체의 기본 클래스 입니다
✏️ NSObject를 상속하는 클래스는 Objective-C와의 상호 운용성을 제공합니다
✏️다양한 기능과 메서드를 활용할 수 있습니다

 

 

//any struct (value type)
var someValue: Any
someValue = 5
someValue = "Hello"
someValue = [1, 2, 3]


struct Person {
    var name: String
    var age: Int
}

var person: Person
person = Person(name: "John", age: 30)

//여러종류의 구조체를 다룰 때는 Any사용
var anyValue: Any
anyValue = Person(name: "Jane", age: 25)
anyValue = 42



//anyobject - class (reference type)
var someObject: AnyObject
someObject = NSString(string: "Hello")
someObject = NSNumber(value: 42)


//nsobject
class MyObject: NSObject {
    var name: String
    init(name: String) {
        self.name = name
    }
}
let obj = MyObject(name: "Example")
반응형