1. Stored Property
저장 속성, 일반 멤버 data, 지연된 저장 속성 - var 변수만 가능, let은 초기화를 해줘야함
2. calculation property
계산 속성, getter/setter, 메모리에 변수를 만드는 것이 아니라 함수를 만드는 개념, 단, 사용자 입장에서는 변수처럼 보임
3. Type property
형식 속성, 정적 멤버 데이터
4. Property Observer
KVO문법과 유사함
5. 샘플코드
class Point
{
var x : Int = 0
var y : Int = 0
init() {print("point init")}
}
// 저장 속성(Stored Property) : 일반 멤버 data, 지연된 저장 속성 - var 변수만 가능, let은 초기화를 해줘야함
// 계산 속성 (calculation property) : getter/setter, 메모리에 변수를 만드는 것이 아니라 함수를 만드는 개념, 단, 사용자 입장에서는 변수처럼 보임
// c#의 유명한 문법 중 하나 : 만드는 사람은 함수, 사용자는 변수
// 형식 속성(Type property) : 정적 멤버 데이터
class Rect
{
// var pt1 = Point()
// var pt2 = Point()
var pt1 = Point()
lazy var pt2 = Point() // 필요할때 메모리 만들기
var width : Int {
get{
return pt2.x-pt1.x
}
set{ // set 지우면 readonly
pt2.x = pt1.x+newValue // newValue는 약속된 변수 width=20할 떄 20
}
}
static var count : Int = 0 // 1.0에서는 class 키워드 사용
}
var rc = Rect()
print("AA")
print(rc.pt2.x)//lazy기 때문에 이 때 초기화가 불린다.
rc.width = 20;
print(rc.width)
print(rc.pt1.x, rc.pt2.x)
// 3. 속성 감시자 (Observer)
// objc kvo 문법과 유사
class People
{
// var name : String = "Unknown" {willSet{} didSet{}}
var name : String = "Unknown" {
willSet{
print("willSet \(name) => \(newValue)")
}
didSet{
print("didSet \(name) <= \(oldValue)")
}
}
}
var p = People()
p.name = "kim"
'교육 > Swift' 카테고리의 다른 글
[swift] subscript (0) | 2016.08.08 |
---|---|
[swift] method (0) | 2016.08.08 |
[swift] init (0) | 2016.08.05 |
[swift] 구조체와 클래스 (0) | 2016.08.05 |
[swift] enum (0) | 2016.08.05 |