728x90
1. Property Observer(속성 감시자)
var name: Type = DefaultValue {
willSet(name) { // 파라미터 이름을 생략하면 newValue라는 기본 파라미터가 제공됩니다.
statements
}
didSet(name) { // oldValue
statements
}
}
class Size {
var width = 0.0 {
willSet {
print(width, "=>", newValue)
}
didSet {
print(oldValue, "=>", width)
}
}
}
let s = Size()
s.width = 123
2. Type Property(형식 속성)
- 형식 속성은 형식 자체에 속한 속성입니다.
- 인스턴스를 생성하지 않고 클래스나 구조체 자체에 값을 저장하는 것을 타입 프로퍼티라고 합니다.
- 저장된 값은 모든 인스턴스가 공통으로 사용할 수 있습니다.
- 프로퍼티 앞에 static 키워드로 추가합니다.
< 저장 형식 속성 >
- 형식 이름을 통해서 접근해야 합니다.
- 형식 속성은 기본적으로 지연 속성입니다.
- 속성에 처음 접근하는 시점에 초기화됩니다.
class Math {
static let pi = 3.14
}
let m = Math()
// m.pi 형식 이름을 통해서 접근해야 합니다.
Math.pi
< 계산 형식 속성 >
enum Weekday: Int {
case sunday = 1, monday, tuesday, wedensday, thursday, friday, saturday
static var today: Weekday {
let cal = Calendar.current
let today = Date()
let weekday = cal.component(.weekday, from: today)
return Weekday(rawValue: weekday)!
}
}
Weekday.today
3. self
- self는 인스턴스 자체에 접근할 때 사용합니다.
- Type 멤버 내부에서 접근하면 형식 자체에 접근합니다.
- self는 현재 인스턴스에 접근하기 위해 사용하는 특별한 속성입니다.
- self를 타입 멤버에서 사용하면 인스턴스가 아닌 형식 자체를 나타냅니다.
self 인스턴스 자체에 접근할 때 사용합니다.
self.propertyName 인스턴스 속성에 접근할 때 사용합니다.
self.method() 메소드에 접근할 때 사용합니다.
self[index] 서브스크립트 호출할 때 사용합니다.
self.init(param) 동일한 형식에 있는 다른 생성자를 호출할 때 사용, self 생략 불가합니다.
class Size {
var width = 0.0
var height = 0.0
func Area() -> Double {
return self.width * self.height // self를 생략할 수 있습니다.
// return width * height
}
func update(width: Double, height: Double) {
self.width = width
self.height = height
}
static let unit = ""
static func doSomthing() {
// self.width 형식 메소드에서 인스턴스 메소드에 직접 접근하는 것은 불가능합니다.
self.unit
}
}
728x90
'Swift' 카테고리의 다른 글
Subscript (0) | 2020.11.25 |
---|---|
Method (0) | 2020.11.25 |
Property - 1 (0) | 2020.11.24 |
Structure and Class (0) | 2020.11.22 |
Enumeration (0) | 2020.11.22 |