Any와 AnyObject의 차이점을 설명하세요.
2022. 7. 4. 02:53ㆍSwift/기술 면접
Answer
Any는 Swift의 모든 타입을 지칭하는 키워드로, 어떤 타입도 수용 가능합니다. AnyObject는 모든 클래스 타입을 지칭하는 프로토콜로, 클래스의 인스턴스만 수용 가능하기 때문에 클래스의 인스턴스가 아니면 할당할 수 없습니다.
1. Any
- Swift의 모든 타입을 지칭하는 키워드
var someAny: Any = 100
someAny = "어떤 타입도 수용 가능합니다"
someAny = 123.12
// let someDouble: Double = someAny
// 컴파일 오류발생
// someAny = nil
// 컴파일 오류발생
- Any 타입에 123.12라는 Double 자료를 넣어두었더라도, Any는 Any 타입이지 Double 타입이 아니기 때문에 위와 같은 형태로 할당할 수 없습니다.
- 위와 같이 할당하고 싶다면 명시적으로 타입을 변환해 주어야 합니다.
- Any는 모든 데이터 타입을 넣을 수 있지만 '없음'을 의미하는 nil은 올 수 없습니다.
2. AnyObject
- 모든 클래스 타입을 지칭하는 프로토콜
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()
// someAnyObject = 123.12
// 컴파일 오류발생
// someAnyObject = nil
// 컴파일 오류발생
- AnyObject는 클래스의 인스턴스만 수용 가능하기 때문에 클래스의 인스턴스가 아니면 할당할 수 없습니다.
- AnyObject 타입에는 클래스의 인스턴스가 아닌 123.12라는 Double형을 할당할 수 없고, nil 또한 할당할 수 없습니다.
'Swift > 기술 면접' 카테고리의 다른 글
| 오토레이아웃을 코드로 작성하는 방법은 무엇인가? (3가지) (0) | 2022.06.22 |
|---|---|
| Extension에 대해 설명하시오. (0) | 2022.06.10 |
| 앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있나요? (0) | 2022.05.22 |
| 실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오. (0) | 2022.05.19 |
| Bounds와 Frame의 차이점을 설명하시오. (0) | 2022.05.11 |