Any, AnyObject와 nil

jonghwan·2022년 9월 23일
0

멋쟁이사자처럼

목록 보기
7/28
post-thumbnail

Any

스위프트의 모든 데이터 타입을 사용할 수 있다는 뜻

변수 또는 상수의 데이터 타입이 Any로 지정되어 있다면 그 변수 또는 상수에는 어떤 종류의 데이터 타입이든지 상관없이 할당할 수 있다.

var someVar:Any = "Ned"
someVar = 50     //o
someVar = 100.1  //o
var someAny: Any = 100
someAny = "어떤 타입도 수용 가능합니다."
someAny = 123.12

let someDouble: Double = someAny  // 컴파일 오류발생

AnyObject

Any보다는 조금 한정된 의미

클래스의 인스턴스만 할당할 수 있다.

Any와 AnyObject는 가능한 사용하지 않는 것이 좋다.

타입에 엄격한 Swift 언어의 특성상 Any 또는 AnyObject로 선언된 변수의 값을 가져다 쓰려면 매번 타입 확인 및 변환을 해줘야 하는 불편한 예기치 못한 오류의 위험 증가의 문제가 생긴다.

타입은 될 수 있는한 정확하게 명시하는 것이 좋다.

class SomeClass {}

var someAnyObject: AnyObject = SomeClass()

// AnyObject는 클래스의 인스턴스만 수용 가능하기 때문에 클래스의 인스턴스가 아니면 할당안됨
someAnyObject = 123.12  // 컴파일 오류발생

nil

특정 타입이 아니라 '없음'을 나타내는 Swift의 키워드

변수 또는 상수에 값이 들어있지 않고 비어있음을 나타내는 데 사용한다.

nil이면 해당 변수 또는 상수에 접근했을 때 잘못된 메모리 접근으로 런타임 오류가 발생한다.

someAny = nil        // 컴파일 오류발생
someAnyObject = nil  // 컴파일 오류발생

0개의 댓글