날쌘 개발자

Property - (1) 본문

ios/기본문법

Property - (1)

훈식이 2022. 4. 17. 15:20
728x90

원래는 프로토콜 개념을 이어서 정리하려 했는데...
알아보기전에 먼저! 프로퍼티라는 개념(?)을 매번 사용하지만
뭔가 프로퍼티의 개념과 종류.. 종류별 특징들에 대한 개념이 아직 정립되지 않은것 같아 한번 정리하고 가려고 한다.

먼저 프로퍼티라는 놈은, 필드(데이터 멤버)와 메소드 간 기능의 중간인 클래스 멤버의 특수한 유형
이라고 하는데, 쉽게말해 클래스/구조체/열거형 에 값을 연결해주는 놈이다.

프로퍼티의 종류는 크게

  • 저장 프로퍼티 - 상수 / 변수 값을 저장하는 프로퍼티
  • 연산 프로퍼티 - 특정 연산을 수행하여 값을 반환하는 프로퍼티
  • 타입 프로퍼티 - 타입 자체에 연결되는 프로퍼티

이렇게 세가지로 나뉜다. 한놈씩 살펴 보겠다.


저장 프로퍼티 (Stored Property)

흔히 클래스와 구조체에서 선언되는 상수/변수들이 프로퍼티라고 보면 된다.
참고로 열거형에서는 저장 프로퍼티를 사용하지 않는다고 한다.

간단하게 기본형태를 보자면

저장 프로퍼티를 갖는 구조체

struct Mystruct{
    var age: Int
    let month: Int
}

var nalSsen = Mystruct(a: 25, b: 12)
print(nalSsen.age) // 25

저장 프로퍼티를 갖는 클래스

class MyClass{
    var age: Int
    let month: Int

    init(age: Int, month: Int) {
        self.age = age
        self.month = month
    }
}

var nalSsen = MyClass(age: 25, month: 12)
print(nalSsen.month) // 12

a가 변수 저장프로퍼티, b가 상수 저장프로퍼티

지연 저장 프로퍼티

추가로지연 저장 프로퍼티 (Lazy Stored Properties) 라는것이 존재하는데,
값이 사용되기 전가지는 값이 계산되지 않는 프로퍼티 라고 한다.
lazy var ~~ 같은 프로퍼티를 본적이 있다면, 그게 이놈이다.

이놈은 게으르다는 표현에 어울리게 선언이 된다해도 생성되지 않고,
프로퍼티에 처음 엑세스 할 때 비로소 만들어진다.
굳이? 라는 생각이 들 수 있지만, 이놈을 잘만 사용하면 공간낭비도 줄일 수 있고,
불필요한 성능 저하도 막을 수 있다.
참고로 지연 프로퍼티는 반드시 변수(var)로 선언해야 한다.
이정도만 알고 지나가도록 하겠다.


728x90

'ios > 기본문법' 카테고리의 다른 글

Delegate  (0) 2022.05.29
Design Pattern - MVMM  (0) 2022.05.15
Protocols - (1)  (0) 2022.04.07
MVC 에 대해  (0) 2022.04.01
components / split  (0) 2022.04.01