반응형
안녕하세요!
오늘은 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")
반응형
'Swift' 카테고리의 다른 글
Swift | class(클래스)와 struct(구조체)에 관하여 - 메서드(method) (0) | 2024.05.16 |
---|---|
Swift | class(클래스)와 struct(구조체)에 관하여 - 3 property ( 프로퍼티 옵저버 willSet, didSet / 타입프로퍼티) (0) | 2024.05.16 |
Swift | class(클래스)와 struct(구조체)에 관하여 - 2 property (저장 프로퍼티 / 계산 프로퍼티) (0) | 2024.05.14 |
Swift | class(클래스)와 struct(구조체)에 관하여 - 1 (0) | 2024.05.14 |
Swift | 함수 (Function)에 관하여 - 1 (0) | 2024.05.13 |