Getter Setter
class Person {
//set 은 private 으로 선언되어 외부에서는 get 만 가능하다.
public private(set) var name: String
init(name: String) {
self.name = name
}
}
var jake = Person(name: "jake")
print(jake.name) // jake
jake.name = "wiki" // private set 이므로 에러 발생
Computed Property
class Test {
private var _myProperty: Int
var myProperty: Int {
get {
return _myProperty
}
set {
return _myProperty = newValue
}
}
//getter 만 선언할 경우 get 키워드 생략 가능
var hexCode: String? {
if let hex = self.hexString {
return "0x" + hex
}
return nil
}
}
struct Point {
var x: Int = 0
var y: Int = 0
var oppositePoint: Point {
get {
return Point(x: -x, y: -y)
}
set(value) {
x = -value.x
y = -value.y
}
}
}
var test: Point = Point(x: 1, y: 2)
print(test) //Point(x: 1, y: 2)
test.oppositePoint = Point(x: -3, y: -4)
print(test) //Point(x: 3, y: 4)
didSet, willSet
프로퍼티 변경 직전, 변경 직후의 이벤트를 감지하여 실행된다.
var property: Int = 10 {
willSet(newValue) {
//property 값이 변경 되기 직전에 호출, newValue 로 새로 초기화 되어질 값이 들어온다.
}
didset(oldValue) {
//property 값이 변경 된 직후 호출, oldValue 에 이전 값이 들어온다
}
}
'IOS' 카테고리의 다른 글
스위프트 Attributes (0) | 2022.10.04 |
---|---|
스위프트 Generic (0) | 2022.10.04 |
스위프트 Property Wrapper (0) | 2022.10.04 |
스위프트 키워드 (0) | 2022.10.04 |
스위프트 Optional (0) | 2022.10.04 |