[TIL] Swift - 구조체, 클래스 2

신승현·2024년 1월 29일

TIL

목록 보기
11/72

1. 저장 프로퍼티

  • 입력된 값을 저장하거나 저장된 값을 제공하는 역할이다.
  • 상수 및 변수를 사용해서 정의 가능하다.
  • 클래스와 구조체에서는 사용이 가능하지만, 열거형에서는 사용할 수 없다.
class PropertyInit {
    // 저장 프로퍼티 - 인스턴스 생성 시 최초 한 번만 실행
    var value01: String! = {
        print("value01 execute")
        return "value01"
    }()
    
    // 저장 프로퍼티 - 인스턴스 생성 시 최초 한 번만 실행
    let value02: String! = {
        print("value02 execute")
        return "value02"
    }()
}

2. 연산 프로퍼티

  • 특정 연산을 통해 값을 만들어 제공하는 역할이다.
  • 변수만 사용해서 정의가 가능하다.
  • 클래스, 구조체, 열거형 모두에서 사용이 가능하다.
import Foundation

struct UserInfo {
    // 저장 프로퍼티 : 태어난 연도
    var birth: Int!
    
    // 연산 프로퍼티 : 올해가 몇년도인지 계산
    var thisYear: Int! {
        get {
            let df = DateFormatter()
            df.dateFormat = "yyyy"
            return Int(df.string(from: Date()))
        }
    }
    
    // 연산 프로퍼티 : 올해 - 태어난 연도 + 1
    var age: Int {
        get {
            return (self.thisYear - self.birth) + 1
        }
    }
}

let info = UserInfo(birth: 1980)
print(info.age)

// 실행 결과
37

3. 프로퍼티 옵저버

  • 특정 프로퍼티를 계속 관찰하고 있다가 프로퍼티의 값이 변경되면 이를 알아차리고 반응하며, 프로퍼티의 값이 설정되면 무조건 호출되며, 동일한 값이 재할당되더라도 호출된다.

4. 타입 프로퍼티

  • 타입 프로퍼티는 인스턴스를 생성하지 않고 클래스나 구조체 자체에 저장하게 되며, 저장된 값은 모든 인스턴스가 공통으로 사용할 수 있다.
  • 모든 인스턴스들이 공유해야 하는 값을 정의할 때 유용하다.
static let/var 프로퍼티명 = 초기값
profile
개발자

0개의 댓글