개발 관련/iOS SWIFT

[Swift] 프로퍼티 (Property)의 종류

magpiebros 2024. 2. 28. 15:55
반응형

프로퍼티에 대해서 알고 있는것 같다가도 모르는게 있는것 같다는 생각이 들어서 프로퍼티에 대해 정리를 해보려 한다.

 

오늘 정리를 하게된 이유는 타입프로퍼티에 대해서 의문이 들기 시작했기 때문이다.

SwiftUI를 공부하던 도중 '타입프로퍼티값을 저장프로퍼티에 적용할 수 없다'와 비슷한 에러가 발생해서,

어? 타입 프로퍼티가 뭐였지?? 로 시작되었다.

 

프로퍼티는 크게 3가지 부류로 나뉜다.

저장 프로퍼티 클래스 / 구조체
연산 프로퍼티 클래스 / 구조체 / 열거형
타입 프로퍼티 클래스 / 구조체 / 열거형

 

저장 프로퍼티

저장 프로퍼티에는 지연 프로퍼티도 포함된다.

 

 

연산 프로퍼티

연산 프로퍼티는 값을 저장하지 않기 때문에 타입 추론을 통한 형식을 알수 없기에,

선언할 때 타입 어노테이션을 통해 자료형을 명시해야 한다.

 

연산 프로퍼티 사용 방법

let name: String { }

 

연산 프로퍼티는 저장 프로퍼티를 가지고 노는 프로퍼티이다.

 

타입 프로퍼티

저장 타입 프로퍼티와 연산타입 프로퍼티가 존재한다.

저장 타입 프로퍼티는 선언시 초기화 되어야 한다.

static을 이용해 선언하며, 자동으로 lazy가 적용된다.

 

타입 프로퍼티는 인스턴트가 생성된다고 매번 생성되지 않고, 한번 불리면 메모리에 올라가고

타입을 통해서 타입 프로퍼티에 접근할 수가 있다.

 

연산 타입 프로퍼티는 서브클래스에서 오버라이딩이 가능하지만, class일 경우에만 오버라이딩이 가능하다.

static은 오버라이딩 불가

 

 

타입 추론(Type Inference) vs 타입 어노테이션(Type Annotation)

 

타입 추론(Type Inference) 

let name = "magpiebros"

 

타입 어노테이션(Type Annotation)

let name: String

 

샘플 코드는 시간이 날때 추가하는걸로..

뭐 이론적인 내용이니 샘플 코드는 별로 필요 없어보이긴 한다.

반응형

'개발 관련 > iOS SWIFT' 카테고리의 다른 글

[Swift] 프로퍼티 랩퍼 (Property wrapper)  (0) 2024.02.29
[Mac] root 비밀번호 설정  (0) 2024.01.05
[외부 IP]내 진짜 외부 아이피 찾는 CMD  (0) 2023.12.17
[Swift] outer:  (0) 2023.11.29
[Swift] Backtick = `  (0) 2023.11.28