willset (x)->(y): 현재값이 x인데 앞으로 바뀔 값이 y
didset (x)->(y): 이전값이 x인데 바뀌고 난 값이 y
stored property에서만 사용 가능하다
struct Person {
var firstName: String {
willSet {
print("willSet: \(firstName) --> \(newValue)")
}
didSet {
print("didSet: \(oldValue) --> \(firstName)")
}
}
var lastName: String
lazy var isPopular: Bool = {
if fullName == "Jay Park" {
return true
} else {
return false
}
}()
...
static let isAlien: Bool = false
}
lazy property ; 인스턴스가 생성될 때 실행되지 않고 해당 프로퍼티가 접근될 때 실행됨
Person per를 선언할 때 메소드가 실행되지 않고 per.isPopular()를 호출할 때 그제서야 실행된다
이런 간단한 프로퍼티에는 그리 큰 절약 효과가 있지는 않겠지만 무거운 연산을 필요로하는 프로퍼티라던가 프로퍼티가 많아진다면
말이 달라진다
mutating: computed property가 stored property를 변경할 때
static let, func : 타입 프로퍼티뿐만 아니라 타입 메소드도 선언 가능
struct Lecture {
var title: String
var maxStudents: Int = 10
var numOfRegistered: Int = 0
func remainSeats() -> Int {
let remainSeats = maxStudents - numOfRegistered
return remainSeats
}
mutating func register() {
// 등록된 학생수 증가시키기
numOfRegistered += 1
}
static let target: String = "Anybody want to learn something"
static func 소속학원이름() -> String {
return "패캠"
}
}
var lec = Lecture(title: "iOS Basic")
//remainSeats(of: lec)
lec.remainSeats()
올인원 패키지 : iOS 앱 개발👉https://bit.ly/2FjWizq
'패스트캠퍼스) ios 개발 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 25회차 미션 (0) | 2020.11.26 |
---|---|
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 24회차 미션 (0) | 2020.11.25 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 22회차 미션 (0) | 2020.11.23 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 21회차 미션 (0) | 2020.11.22 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 20회차 미션 (0) | 2020.11.21 |