티스토리 뷰
swift로 개발을 하다보면 .self라는 키워드를 많이 확인할 수 있다.
.self가 무엇인지 알아보자.
.self
.self는 swift 언어에서 메타 타입을 나타내는 데 사용되는 키워드이다.
메타 타입(meta type)이란?
: 메타 타입은 데이터 타입의 타입이다. 즉, 어떤 타입의 데이터 타입을 가리는 것이다.
예를 들어, 'Int'는 정수 값을 저장하는 데이터 타입이며, 'Int.self'는 'Int'타입 자체를 가리키는 메타 타입이다.
메타 타입은 swift의 강력한 타입 시스템을 활용하는 데 사용된다.
.self 사용 예시
1️⃣ 타입 인스턴스 생성
'.self'를 사용해 특정 타입의 인스터스를 생성할 수 있다.
일반적으로 프로그램 실행 중에 동적으로 타입을 선택하는 데 유용하다.
let intType = Int.self // Int 타입의 메타 타입
let newInt = intType.init(42) // Int 타입의 인스턴스를 생성
print(newInt) // 출력: 42
위 코드에서 'intType'은 'Int'타입의 메타 타입이다. 이 메타 타입을 사용해 'init' 생성자를 호출하여 'Int'타입의 인스턴스를 생성한다.
2️⃣ 타입 확인 및 비교
'.self'는 타입을 확인하거나 다른 타입과 비교할 때 사용될 수 있다.
특정 타입을 다룰 때 조건부 로직을 작성할 때 유용하다.
let someValue: Any = 42
if someValue is Int.self {
print("someValue는 Int 타입입니다.")
} else {
print("someValue는 Int 타입이 아닙니다.")
}
// 출력: someValue는 Int 타입입니다.
위 코드에서 'is'연산자를 사용해 'someValue'의 타입이 'Int'인지 확인하고 있다.
3️⃣ 타입의 이름 가져오기
'.self'를 사용하여 특정 타입의 이름을 문자열로 가져올 수 있다.
디버깅이나 로깅 목적으로 유용하다.
let typeName = String.self.description // String 타입의 이름을 가져옴
print(typeName) // 출력: "String"
위 코드에서 'description'프로퍼티를 사용해 'String.self'의 이름을 문자열로 가져오고 있다.
.self는 언제 사용하는가
1️⃣ 리플렉션(Reflection)
리플렉션은 실행 중에 프로그램의 구조와 속성을 검사하거나 조작하는 기술을 의미한다.
swift에서 리플렉션을 사용하려면 '.self'를 통해 타입 정보를 제공해야 한다.
let someValue: Any = 42
if Mirror(reflecting: someValue).subjectType == Int.self {
print("someValue는 Int 타입입니다.")
} else {
print("someValue는 Int 타입이 아닙니다.")
}
'.self'는 'Int'타입을 나타내는 데 사용되어 'Mirror'가 'someValue'의 타입을 확인할 수 있다.
2️⃣ 동적 타입 생성
프로그램이 실행 중에 특정 타입의 인스턴스를 생성해야 할 때 '.self'를 사용한다.
'.self'를 사용해 메타 타입을 얻은 다음 해당 메타 타입의 'init' 생성자를 호출해 인스턴스를 생성할 수 있다.
let intType = Int.self // Int 타입의 메타 타입
let newInt = intType.init(42) // Int 타입의 인스턴스를 생성
'iOS' 카테고리의 다른 글
[Swift] - Alamofire 사용법 (0) | 2023.11.20 |
---|---|
[Swift] MVC 패턴 (0) | 2023.10.31 |
[Swift] CocoaPod 설치와 사용법 (0) | 2023.10.30 |
[Swift] self는 무엇인가? (0) | 2023.10.29 |
[Swift] .DS_Store 파일 (0) | 2023.10.15 |