티스토리 뷰

프로퍼티의 정의

- Struct, Class 와 같은 Object의 Data 파트입니다. (enum은 연산 프로퍼티만 가능)

- 저장 프로퍼티, 연산 프로퍼티, 타입 프로퍼티 등등 여러 종류가 있습니다. 

 


저장 프로퍼티 (Stored Property)

- 값을 저장해서 변수로 들고 있는 것을 저장 프로퍼티라고 합니다.

struct Person {

    var name: String = "Jun"
    
    let gender: String = "Male"
    
}

 

연산 프로퍼티 (Computed Property)

- var 키워드만 가능합니다.

- 저장된 값을 이용해서 가공 혹은 계산된 값을 제공할 때 사용합니다.

- 연산 프로퍼티 내부에 get{ }, set{ } 을 설정할 수 있습니다.

- get{ }은 해당 프로퍼티를 호출하게 되면 실행되고 set{ }은 해당 프로퍼티에 값이 할당되면 실행됩니다.

- set{ }에서 새로 할당된 값은 newValue를 통해 받을 수 있습니다. 

struct Person {
 
    var yearOfBirth: Int = 1997
    
    var age: Int {
        
        get {
            return 2022 - yearOfBirth
        }
    
        set {
            yearOfBirth = 2022 - newValue
        }
    
    }
}
    
var person = Person()

person.age	//25

person.age = 23

person.yearOfBirth	//1999

 

타입 프로퍼티 (Type Property)

- 생성된 인스턴스와 상관없이 Struct, Class의 타입 자체의 속성을 정해줄때 사용합니다.

- Static을 사용합니다.

- 객체로 접근하지 않고 Struct, Class의 이름으로 접근합니다.

struct Person {
 
    static var sayHello: String {
        
        return "Hello"
        
    }
    
}

Person.sayHello	//Hello

 


프로퍼티 감시자(Property Observer)

- 프로퍼티의 값이 바뀔 떄 원하는 동작을 수행할 수 있는 기능입니다.

- didSet { }, willSet { } 이 있습니다.

- 연산 프로퍼티에는 사용할 수 없습니다.

 

 

didSet{ }

- 값이 바뀌었을 때 실행됩니다.

- oldValue로 이전 값을 불러오는 것이 가능합니다.

struct Person {

    var name: String {
    
    didSet {
        
        print("개명 전 : \(oldValue), 개명 후 : \(name)")
        
    }
    
}

var person = Person(name: "Jun")

person.name = "Kay"

// 개명 전 : Jun, 개명 후 : Kay

willSet{ }

- 값이 바뀌기 직전에 실행됩니다.

- newValue로 새로운 값을 불러오는 것이 가능합니다.

struct Person {
 
    var name: String {
        
        willSet {
            
            print("곧 \(newValue)로 개명 될 겁니다.")
            
        }
    }
    
}

var person = Person(name: "Jun")

person.name = "Kay"  // 곧 Kay로 개명 될 겁니다.

 

Reference :

패스트캠퍼스 iOS 앱 개발 올인원 패키지

'Swift' 카테고리의 다른 글

[iOS] 옵셔널 체이닝 (Optional Chaining)  (0) 2021.03.18
[iOS] Swift Closure 정리  (0) 2021.02.25
[iOS] Swift 열거형 (enum)  (0) 2021.02.22
[iOS] Swift Collection Types (Array, Dictionary, Set)  (0) 2021.02.17
[iOS] Swift Fuction 정리  (0) 2021.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함