티스토리 뷰

iOS

iOS) @frozen

hyun99999 2022. 6. 17. 22:56
728x90
반응형

Swift 5.6

@frozen struct GeometryReader<Content> where Content : View

열거형의 경우 또는 구조체의 저장된 인스턴스 프로퍼티를 추가, 제거, 재정렬하여 선언을 바꿀 수 없다.

frozen 으로 표시하면 추가적인 최적화를 진행할 수 있기 떄문에 라이브러리의 향후 버전을 제한적으로만 변경할 수 있도록 하지만 이와 같은 성능을 얻기때문에 flexibility 를 포기할 수 있다고 합니다.

frozen 열거형에 대한 switch 문은 default case 를 필요로 하지 않습니다. 해당 열거형 switch 문에서 default, @unknown 기본 케이스를 포함하면 해당 코드가 실행되지 않기 때문에 warning 이 발생합니다.

Attributes - The Swift Programming Language (Swift 5.6)

라이브러리에 많이 사용되기때문에 위와 같은 default 문을 사용하지 않는 점이 코드의 가독성을 올려주는 것이 일반적인 장점이다. 그래서 라이브러리를 만드는 과정이 아니라면 구조체에서는 잘 사용되지 않음을 볼 수 있었다.(SwiftUI GeometryReader 에서 사용됨.)

frozen 구조체의 프로퍼티는 프로퍼티 관찰자를 가질 수 없다.

nonfrozen enumeration 은 앱을 컴파일하고, 출시한 후에도 미래에 새로운 enumeration cases 를 얻을 수 있는 special kind 라고 한다.

(그만큼 경우에 따라는 디폴트라는 것 같다.)

Statements - The Swift Programming Language (Swift 5.6)

728x90
반응형
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
링크
Total
Today
Yesterday