* Property Observer (프로퍼티 감시자)
: willSet(값이 변경되기 직전), didSet(값이 변경된 직후) 프로퍼티 변경을 감시
* Computed Property (연산 프로퍼티)
: set, get 저장된 값을 연산(가공)하여 반환
* lazy variables (게으른 변수)
: 필요하지만 실제로 사용되기 전에는 미리 불러오지 않는 형태의 변수를 의미 (불필요한 메모리 낭비 줄이는 효과)
<실습 코드>
import UIKit
struct Person {
var firstName: String {
// willSet : 변수 변경이 이루어지기 전에 확인 (firstName --> newValue)로 변경
willSet {
print("willSet: \(firstName) --> \(newValue)")
}
// didSet : 변수가 변경된 이후에 확인 (oldValue --> firstName)로 변경
didSet {
print("didSet: \(oldValue) --> \(firstName)")
}
}
var lastName: String
var fullName: String {
// computed Property : 재가공하여 변수를 사용
get {
return "\(firstName) \(lastName)"
}
set {
if let firstName = newValue.components(separatedBy: " ").first {
self.firstName = firstName
}
if let lastname = newValue.components(separatedBy: " ").last {
self.lastName = lastname
}
}
}
lazy var isPopular: Bool = {
if fullName == "Kim Jinsu" {
return true
}else {
return false
}
}()
static let isAlien: Bool = false // struct(구조)의 직접적인 Property는 "static 변수 사용"
}
var person = Person(firstName: "Jason", lastName: "Lee")
person.firstName
person.lastName
person.firstName = "Hee"
person.lastName = "Me"
person.firstName
person.lastName
person.firstName = "Jinsu"
person.lastName = "Kim"
person.fullName
'iOS' 카테고리의 다른 글
[16일차] Class 사용 (0) | 2020.08.04 |
---|---|
[15일차] Property vs Method (0) | 2020.08.04 |
[13일차] Structure(구조)와 Class (0) | 2020.07.30 |
[12일차] Set 과 Closure 이용 (0) | 2020.07.28 |
[11일차] Array 함수와 Dictionary 실습 (0) | 2020.07.27 |
댓글