본문 바로가기

교육/Swift

[swift] property

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