Swift

Swift | class(클래스)와 struct(구조체)에 관하여 - 3 property ( 프로퍼티 옵저버 willSet, didSet / 타입프로퍼티)

ziziDev 2024. 5. 16. 12:29
반응형

안녕하세요

오늘은 프로퍼티 2번째 시간입니다

 

프로퍼티 옵저버와

타입프로퍼티에 대해서 배우고자 합니다

 

저번시간에

저장 프로퍼티와

계산 프로퍼티에 대해서 배웠는데요

모르겠다 하시는 분들은

한 번 읽어보고 이 게시글을 보는것을 추천드립니다

 

 

프로퍼티 옵저버

(Property Observer)

 

값이 변경될 때 이를 알아차리고 반응하는 객체입니다

 

옵저버는 프로퍼티 값이 설정될 때 마다 항상 호출됩니다

 

만약 현재 값과 동일한 값이 할당되더라도 프로퍼티 옵저버는 호출이 된답니다

 

프로퍼티 옵저버는 2가지 종류가 있습니다

 

willSet / didSet 

용도가 반대된답니다

 

 

속성이 변하는 시점을 알아차리고 호출되는 코드를 짜는 자체가 어렵기 때문에

실제 프로젝트에서 많이 사용하는데

여기서 didSet을 더 많이 사용합니다

 

 

매개상수는 didSet(매개상수) / willSet(매개상수)를 넣을 수 있지만

기본적으로 oldValue / newValue를 제공하고 있습니다

 

 

타입 프로퍼티

 

클래스나 구조체 또는 열거형과 같은 객체 자체에 관련된 값을 다루어야 할 때

인스턴스를 생성하지 않고

클래스나 구조체 자체에 값을 저장하는 경우를 타입 프로퍼티라고 부릅니다

 

클래스 구조체의 인스턴스에 속하는 값이 아닌

자체에 저장하고 모든 인스턴스가 공통으로 사용할 수 있습니다

 

모든 인스턴스들이 공유해야하는 값을 정의할 때 유용하답니다

 

클래스나 구조체 열거형 안에서 static 을 선언하고 상수나 변수 전역범위를

가질 수 있답니다

 

타입 프로퍼티를 선언할 때는 초기값을 반드시 할당해야합니다

타입 프로퍼티는 인스턴스와 연관되지 않는 별개의 아이랍니다

 

이렇게 인스턴스화 해도 접근할 수 없는걸 위 그림에서 볼 수 있습니다

 

접근하려면??

 

 

static은 전역으로 접근이 가능하기에 공통적으로 다루는

데이터를 static으로 정하고 사용합니다

즉 클래스의 인스턴스가 아닌 클래스 자체에 정보를 저장하고 관리할 때 유용합니다

 

게임에서는

점수 / 레벨

사용자의 개인 데이터를 여러곳에서 공유하는 경우에 사용했었습니다

 

이렇게 willSet / didSet과

타입 프로퍼티에 대해서 간단히 알아보았습니다

 

타입 프로퍼티는 앞으로 상속을 배웠을 때 좀 더 심화해서 정리해보겠습니다

 

읽어주셔서 감사합니다

혹시 잘못된 정보가 있다면 꼭 댓글로 알려주시면 감사하겠습니다❤️

반응형