아삭아삭 iOS 개발

[Swift 독학] 패스트캠퍼스 챌린지 21일차_프로퍼티_저장 프로퍼티 본문

Swift

[Swift 독학] 패스트캠퍼스 챌린지 21일차_프로퍼티_저장 프로퍼티

바닐라머스크 2022. 2. 13. 23:52

이번 포스팅에서는 프로퍼티가 무엇인지에 대해 알아보고, 저장·연산·타입 프로퍼티 중에서도

저장 프로퍼티에 대해 예시를 통해 자세히 정리해보려고 합니다.

 

 

■ 프로퍼티 (property)

  • 클래스, 구조체 또는 열거형 등에 관련된 값을 의미
    → 클래스, 구조체, 열거형 내부에 구현 가능
  • 타입과 관련된 값을 저장, 연산 가능
  • 프로퍼티 종류
    : 인스턴스 저장 프로퍼티 / 타입 저장 프로퍼티 / 인스턴스 연산 프로퍼티 / 타입 연산 프로퍼티 / 지연 저장 프로퍼티
  • 열거형 내부에서는 연산 프로퍼티만 구현 가능
    (연산 프로퍼티는 var로만 선언 가능)

 

1) 저장 프로퍼티 (stored property)

  • 인스턴스의 변수(var) 또는 상수(let)(= 구조체 내에 선언된 변수나 상수)
    → 인스턴스에 프로퍼티의 값이 저장된 것
  • 클래스(class)와 구조체(struct)에서 사용 가능
  • 프로퍼티를 사용하는 가장 간단한 방법
  • 일반적으로 변수(var)로 선언된 프로퍼티는 값 변경 가능, 상수(let)로 선언된 프로퍼티는 값 변경 불가
    ※ 구조체 인스턴스 상수(let) 선언할 경우, (값 타입이기 때문에) 내부에서 변수(var)로 선언된 프로퍼티라고 해도 모두 상수가 되어서 수정
    불가
    ※ 클래스 인스턴스  상수(let) 선언할 경우, (참조타입이기 때문에) 내부에서 변수(var)로 선언된 프로퍼티의 값 수정 가능
ex1) 고양이라는 "구조체” 선언, 구조체를 인스턴스화한 경우

struct Cat {
    var name: String
    let age: Int
}

var cat = Cat(name: "Elice", age: 1)
cat.name = "Christine" // 저장 프로퍼티 값 변경 가능
// cat.age = 3 저장 프로퍼티 값 변경 불가

let cat2 = Cat(name: "Elice", age: 1)
// cat2.name = "Christine" name 프로퍼티가 내부에서 변수(var)로 선언된 프로퍼티라고 해도, 구조체 인스턴스인 cat2가 상수(let)로 선언되었기 때문에 값 변경 불가

 

ex2) 다람쥐라는 "클래스” 선언, 클래스를 인스턴스화한 경우

class Squirrel {
    var name: String
    let age: Int

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

let squirrel = Squirrel(name: "Elice", age: 1)
cat.name = "Christine" // 클래스 인스턴스인 squirrel이 상수(let)로 선언되었어도, 내부에서 변수(var)로 선언한 name 프로퍼티 값 변경 가능

 

 

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.