본문 바로가기
Smart Device/Swift

Swift Initializer Delegation for Value Types

by 언덕너머에 2015. 6. 24.

Initializer Delegation for Value Types

Swift에서 제공하는 이니셜라이저는 다른 이니셜라이저를 호출할 수 있다.

이러한 기능을 "Initializer Delegation" 이라고 한다. Swift에서 Initializer Delegation을 사용하는 이유는 같은 작업을

하는 여러 이니셜라이져가 존재하는 것을 막기 위한 것이다.


  • struct Size {
  • var width = 0.0, height = 0.0
  • }
  • struct Point {
  • var x = 0.0, y = 0.0
  • }


  • struct Rect {
  • var origin = Point()
  • var size = Size()
  • init() {}
  • init(origin: Point, size: Size) {
  • self.origin = origin
  • self.size = size
  • }
  • init(center: Point, size: Size) {
  • let originX = center.x - (size.width / 2)
  • let originY = center.y - (size.height / 2)
  • self.init(origin: Point(x: originX, y: originY), size: size)
  • }
  • }
  • let basicRect = Rect()
  • // basicRect의 origin은 (0.0, 0.0) 이고 size는 (0.0, 0.0) 이다.

  • let originRect = Rect(origin: Point(x: 2.0, y: 2.0),
  • size: Size(width: 5.0, height: 5.0))
  • // originRect의 origin은 (2.0, 2.0) 이고 size는 (5.0, 5.0) 이다.

  • let centerRect = Rect(center: Point(x: 4.0, y: 4.0),
  • size: Size(width: 3.0, height: 3.0))
  • // centerRect의 origin은 (2.5, 2.5) 이고 size는 (3.0, 3.0)이다.