2017년 11월 2일 목요일

Property(프로퍼티) - Stored Property (저장 프로퍼티) @@ Swift4.0

저장 프로퍼티 

- 구조체 -
struct S_Point {
  var x : Int
  var y : Int
}

// 구조체는 기본적으로 저장 프로퍼티를 매개변수로 갖는 이니셜라이저가 있습니다. 
let testPoint = S_Point(x: 10, y: 10)

- 클래스 -
class Position{
  var point : S_Point // << stored property 'point' without initial value prevents synthesized initializers 컴파일 에러 발생 

  let name : String // << stored property 'name' without initial value prevents synthesized initializers 컴파일 에러 발생

// 프로퍼티 기본값이 지정되어 있지 않다면 이니셜라이저를 따로 정의해주어야 합니다. 정의하지 않으면 위 컴파일 에러 발생 

  init(name : String, currentPoint : S_Point) {
    self.name = name
    self.point = currentPoint
  }
// 이니셜라이저 정의 후 컴파일 에러 사라짐 
}

// 이니셜라이저를 호출함으로써 초기값을 할당해야 인스턴스가 생성됩니다. 
let testPoint2 = Position(name: "tester", currentPoint: testPoint)

구조체는 프로퍼티에 맞는 이니셜라이저를 자동으로 제공하지만 클래스는 그렇지 않습니다. 하지만 클래스의 저장 프로퍼티의 초기값을 지정해주면 따로 이니셜라이저를 구현하지 않아도 됩니다.


class CustomPosition {
  var name : String = "tester" // << 초기값을 지정했기 때문에 이니셜라이저 없어도 컴파일 에러 발생 안함
  var age : Int? // 인스턴스 생성 시 프로퍼티에 값이 필요 없다면 프로퍼티를 옵셔널로 선언가능
}

let customName : CustomPosition = CustomPosition()
print(customName.name) // "tester" 출력
print(customName.age) // "nil" 출력

// 옵셔널 프로퍼티의 값을 알게 되었을때 할당
customName.age = 10
print(customName.age) // "Optional(10)"
print(customName.age!) // 옵셔널 벗기기 "10"

댓글 없음:

댓글 쓰기

추천 게시물

애플 개발자 등록방법 2016년 5월 8일 기준!!

애플 개발자 등록 절차 1. 개발자 등록 페이지 이동    애플 개발자 로그인 > Account 페이지 이동 > 하단 영역 클릭 (이미지 참조)   >> Enroll 클릭 >> 무조건 승인!! ...