관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] Property 각 목적에 맞는 사용 방법 (getter, setter, public private(set)) 본문

iOS 응용 (swift)

[iOS - swift] Property 각 목적에 맞는 사용 방법 (getter, setter, public private(set))

jake-kim 2021. 6. 18. 00:32

모듈 구현 시 응집도를 높이기 위한 방법

  • 외부에서 읽기만 가능하고 변경은 내부에서만 가능한 property 설정
  • public private(set) 사용 -> swift에서 get메서드가 필요없는 이유
class Person {
    public private(set) var name: String
    
    init(name: String) {
        self.name = name
    }
}

var jake = Person(name: "jake")
print(jake.name) // jake
jake.name = "wiki" // error 발생

Computed Property의 용도

  • getter / setter 용도의 computed property
    • storedProperty는 언더바를 붙인 형태로 구분하여 사용
class Test {

    private var _myProperty: Int
    
    var myProperty: Int {
        get {
            return _myProperty
        }
        set {
            return _myProperty = newValue
        }
    }

}
  • 이름 그대로 property에 연산이 필요한 경우
struct Rect {
    var origin = Point()
    var size = Size()
    var center: Point {
        get {
            let centerX = origin.x + (size.width / 2)
            let centerY = origin.y + (size.height / 2)
            return Point(x: centerX, y: centerY)
        }
        set {
            origin.x = newValue.x - (size.width / 2)
            origin.y = newValue.y - (size.height / 2)
        }
    }
}
Comments