iOS

[스위프트] 프로퍼티 개념 요약

dev_beom_12 2020. 5. 27. 12:57
반응형

프로퍼티

- 클래스, 구조체, 열거형 등에 관련된 값

- 저장 프로퍼티 = 특정 타입의 인스턴스에 사용, 인스턴스의 변수 또는 상수, 클래스와 구조체에서만 사용

- 연산 프로퍼티 = 특정 타입의 인스턴스에 사용, 값의 저장 x, 특정 연산을 실행한 결괏값

- 타입 프로퍼티 = 특정 타입에 사용되는 프로퍼티

// 클래스, 구조체 같은데에서 사용되는 자원(값), 변수가 해당되는거로 보임

지연 저장 프로퍼티(복잡한 클래스나 구조체 구현에서 효율적)

- 클래스 인스턴스의 저장 프로퍼티로 다른 클래스 인스턴스나 구조체 인스턴스를 할당해야 할 때

- 인스턴스를 초기화하면서 저장 프로퍼티로 쓰이는 인스턴스들이 한번에 생성되어야 하거나 모든 저장 프로퍼티를 사용할 필요가 없는 경우

struct CoordinatePoind{                                                 

     var x : int = 0                                                             

     var y : int = 0

}

Class Position {

  // lazy는 반드시 var와 쓰여야함, 

  // 사용되기 전까지는 불필요한 로드를 하지 않음

  lazy var point : CoordinatePoint = CoordinatePoint()

  let name: String

  init(name : String){

     self.name = name

  }

}

// Position이라는 객체는 생성됬지만 아직 CoordinatePoint는 객체에 생성되지 않은 상태.

let yagomPosition: Position = Position(name: "yagom")                                                           

// 이 코드를 통해 point 프로퍼티로 처음 접근할 때 point 프로퍼티의 CoordinatePoint가 생성됨

print(yagomPosition.point)

연산 프로퍼티

- 인스턴스 내/외부 값을 연산하여 적절한 값을 돌려주는 Getter 역할이나 은닉화된 내부의 프로퍼티 값을 간접적으로 설정하는 Setter 역할 수행.

- 클래스와 구조체 열거형에 모두 추가 가능.

- get, set 메서드를 통하여 간결화.

- 기존에 인스턴스를 외부에서 메서드를 통해 내부 값에 접근하려면 접근자, 설정자 두개의 메서드를 구현해야 했음 (가독성이 나빠짐).

// 연산 프로퍼티를 생성할때 

// var oppositePoint: CoordinatePoint{} 이런 형태로 ( : 구조체명 ) 해주는 이유를 모르겠음 

읽기 전용 연산 프로퍼티

- get 메서드만 사용

메서드

- 특정 타입에 관련된 함수

반응형