[Swift] 프로퍼티

HongDuHyeon·2023년 3월 26일
0
post-thumbnail

property

클래스, 구조체 또는 열거형 등에 관련된 값을 뜻한다.
인스턴스에 소속된 변수 및 속성이라고 생각하면 된다.

저장 프로퍼티

  • 인스턴스의 변수 또는 상수를 의미한다.
struct Person {
    var name: String
    let gender : String
}
var person = Person(name: "Duhyeon", gender: "male")
print(person)

// Person(name: "Duhyeon", gender: "male")

선어한 person을 만약 상수로 바꾼다면 ?

let person2 = Person(name: "Hong", gender: "male")

person2.name = "HongDuhyeon"

//error : cannot assign to property: 'person2' is a 'let' constant

처음에 구조체에 선언될 때 상수로 지정이 되어 있어서 person2에서 값을 바꾸려하면 내부 프로퍼티가 모두 상수가 되어서 에러가 난다.

하지만 class는?

class는 참조 타입이여서 구조체와 다른 결과값이 나오게 된다.
class는 상수로 선언했더라도 프로퍼티의 값을 바꿀 수 있다.

연산 프로퍼티

  • 값을 저장하는게 아니라 특정 연산을 실행하는 결과값을 의미한다.
    클래스, 구조체, 열거형에서 사용가능하고 값을 직접 저장하진 않지만 getter와 setter를 사용해서 다른 프로퍼티와 값들에 직접 접근할 수 있다.

프로퍼티 옵저버

프로퍼티 값의 변화를 관찰하고 반응한다. 새로운 값이 기존 값과 같더라도 호출 된다. 저장 프로퍼티, 오버라이딩이 된 저장/계산 프로퍼티에서만 사용이 가능하다.

2가지 속성

  • willSet : 값이 저장 되기 직전에 호출되는 옵저버, 새로 저장될 프로퍼티의 값을 상수 매개변수로 전달한다. 이 매개변수를 willSet안에서 사용될 수 있도록 정할 수 있다. 만약 매개변수를 사용하지 않는다면 newValue를 사용할 수 있다.

  • didSet : 값이 저장 된 직후에 호출되는 옵저버, 프로퍼티의 기본 값이 상수 매개변수로 전달된다. 이 매개변수를 didSet안에서 사용될 수 있도록 정할 수 있다. 만약 매개변수를 사용하지 않는다면 oldValue를 사용할 수 있다.

위 사진에서도 보다시피 값이 저장되기 전,후로 실행이 된다.

타입 프로퍼티

특정 인스턴스에서 사용되는게 아닌 특정 타입에서 사용되는 값을 의미하고 인스턴스의 생성없이 객체내의 프로퍼티의 접근을 가능하게 한다. 프로퍼티 타입 자체와 연결하는 것을 말한다.

  • 저장 프로퍼티와 연산 프로퍼티에서만 사용가능하고 static 키워드를 사용한다. 사용하게 되면 dot notation으로 프로퍼티에 접근할 수 있게 되고 값도 변경이 가능하다.

profile
마음이 시키는 프론트엔드.. RN과 IOS를 곁들인..

0개의 댓글