Skip to content

Latest commit

 

History

History
50 lines (30 loc) · 1.9 KB

Attribute_frozen.md

File metadata and controls

50 lines (30 loc) · 1.9 KB

Attribute - @frozen

frozen이란,

데이터 구조의 불변성을 보장하기 위해 해당 데이터 구조를 변경할 수 없도록 설정하는 것을 말한다.

즉, frozen이 표시도니 데이터 구조는 한번 생성되면 내부 레이아웃이 런타임에 변경되지않으며, 수정 할 수 없는 불변상태를 유지한다.

주로 구조체나 열거형에 이 어노테이션을 사용한다.

불변성이 보장되면 컴파일러가 더 효율적인 코드를 생성할 수 있으며, 인라인화와 같은 최적화가 가능해진다.

또한 런타임 라이브러리와 상호작용하는 방법에 영향을 미칠 수 있다.

아래와 같이 어노테이션으로 표기한다.

@frozen struct Point {
    var x: Double
    var y: Double
}

// 이 구조체는 불변성이 보장되므로 @frozen 어노테이션을 사용한다.

frozen이 들어간 여러 구조들

swift에서 대표적인 구조들이며 이밖에도 여러 구조들이 있다.

  • String: Swift의 문자열 타입인 String

    • String은 불변성을 가지며, 내부 레이아웃이 런타임에 변경되지 않는다.
  • Array: Swift의 배열 타입인 Array

    • 배열은 불변성을 가질 수 있지만, 가변성을 지닌 배열도 생성할 수 있다.
    • 배열의 내부 레이아웃이 런타임에 변경되지 않는다.
  • Set: Swift의 집합 타입인 Set

    • 집합도 배열과 마찬가지로 불변성과 가변성을 가질 수 있으며, 내부 레이아웃이 런타임에 변경되지 않는다.
  • Dictionary: Swift의 딕셔너리 타입인 Dictionary.

    • 딕셔너리도 불변성과 가변성을 가질 수 있으며, 내부 레이아웃이 런타임에 변경되지 않는다.
  • Range: Swift의 범위 타입인 Range

    • 범위 역시 불변성을 가지며, 내부 레이아웃이 런타임에 변경되지 않는다.

History

  • 230804: 초안작성