반응형
안녕하세요 공공돌🧸 입니다.
Any, AnyObject, nil 에 대해 정리 해봤습니다.
1. Any, AnyObject, nil
- Any - Swift의 모든 타입을 지칭하는 키워드
- AnyObject - 모든 클래스 타입을 지칭하는 프로토콜
- nil - '없음'을 의미하는 키워드
Any
- Swift의 모든 타입을 지칭하는 키워드
var someAny: Any = 100
someAny = "어떤 타입도 수용 가능합니다"
someAny = 123.12
// Any 타입에 Double 자료를 넣어두었더라도 Any는 Double 타입이 아니기 때문에 할당할 수 없습니다.
// 명시적으로 타입을 변환해 주어야 합니다. (타입 변환은 차후에 다룹니다.)
let someDouble: Double = someAny // 컴파일 오류발생
AnyObject
- 모든 클래스 타입을 지칭하는 프로토콜
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()
// AnyObject는 클래스의 인스턴스만 수용 가능하기 때문에 클래스의 인스턴스가 아니면 할당할 수 없습니다.
someAnyObject = 123.12 // 컴파일 오류발생
nil
- 없음을 의미하는 키워드
- 다른 언어의 NULL, Null, null 등과 유사한 표현입니다.
// someAny는 Any 타입이고, someAnyObject는 AnyObject 타입이기 때문에 nil을 할당할 수 없습니다.
var someAny: Any = 100
var someAnyObject: AnyObject = SomeClass()
// nil을 다루는 방법은 옵셔널 파트에서 다룹니다.
someAny = nil // 컴파일 오류발생
someAnyObject = nil // 컴파일 오류발생
2. 생각해보기
▶ 사람이 사용하는 숫자 '0'은 '없음'이라는 의미를 갖고있습니다. 프로그래밍에서 0은 없음을 나타낼 수 있을까요?
▶ 0이 있는데 nil 이라는 표현은 왜 존재하는 것일까요?
공공돌의 생각 💬
사람이 사용하는 숫자 '0'은 없음을 의미합니다. 하지만 프로그래밍에서의 0은 어떨까요?
컴퓨터는 비트(bit)로 표현을 하고 연산을 하기 때문에 0 이라는 숫자도 메모리가 할당된 값이라고 컴퓨터가 인식을 합니다.
1bit = 0 , 2bit = 00, 4bit = 0000, 8bit = 0000 0000 . . .
이러한 이유로 숫자 0은 값이 존재하기 때문에 메모리에 아무런 값도 없다는걸 표현하기 위해 nil 이라는 대체어를 활용한 것이 아닐까 라는 생각입니다.
공부하는 공돌이, 공공돌입니다🐻
@sheep1sik
출처 : 야곰 iOS 프로그래밍을 위한 스위프트 기초
반응형
'iOS > Swift 기초' 카테고리의 다른 글
[ Swift 기초 ] 함수 기본 (2) | 2024.01.03 |
---|---|
[ Swift 기초 ] 컬렉션 타입(Array, Dictionary, Set) (1) | 2024.01.02 |
[ Swift 기초 ] 기본 데이터 타입 (2) | 2024.01.02 |
[ Swift 기초 ] 상수와 변수 (1) | 2024.01.02 |
[ Swift 기초 ] 명명법 / 콘솔로그 / 문자열 보간법 (1) | 2024.01.02 |