순서
@frozon이란?
이점
@unknown
@frozen이란?
Swift에선 @을 Attributes라고 부르는데 아래에서 어떤 기능을 하는지 알아보겠습니다
Swift의 기본 자료형들은 모두 @frozen으로 선언되어 있습니다
@frozen으로 선언된 구조체는 Stored프로퍼티를 추가할 수 없습니다
Double구조체에 extension으로 실습을 해보겠습니다
extension Double {
func printTest (){
print("Testing")
}
}
var A:Double = 10.1
A.printTest() //Testing
|
cs |
자료형인 Double구조체에 printTest()메서드를 추가했습니다
Double형 변수를 만들고 메서드를 실행하니 정상적으로 출력되었습니다
이번엔 Stored프로퍼티를 추가해 보겠습니다
extension Double {
func printTest (){
print("Testing")
}
}
var A:Double = 10.1
A.printTest() //Testing
extension Double {
var A = "A"
}// 에러발생
|
cs |
Stored프로퍼티를 추가하니 컴파일러가 아래의 에러를 띄웠습니다
error: extentions must not contained stored properies
기본 자료형을 frozen을 추가한 이유는 기존 라이브러리에 선언된 모든 자료형이 영향을 받기 때문일 것 같습니다
만약 String형에 프로퍼티가 생기면 생성과 동시에 멤버 초기화가 필요한데
기존 라이브러리엔 초기화가 되어있지 않습니다
(computed프로퍼티는 Stored프로퍼티가 없으니 애초에 생성이 불가능)
장점
@frozen을 사용해서 얻을 수 있는 이점을 아래와 같습니다
•열거형 switch문 작성 시 default문을 생략해 컴파일 속도를 높일 수 있다고 합니다
func frozenExample(_ sizeClass: UIViewAnimatingState){
switch sizeClass{
case .active:
break
case .inactive:
break
case .stopped:
break
}
}
|
cs |
+ @unknown
열거형 데이터를 추가할 경우 해당 cases는 본인도 모르는 사이에 Switch문 default에 빠질 수 있습니다
이 경우 @unknown을 추가하면 컴파일시 warning으로 빠진 case를 알려줍니다
swtich문은 case C가 없습니다
@unknown을 붙이면 Warning을 띄웁니다
참고자료
https://jllnmercier.medium.com/swift-unknown-and-frozen-attributes-8d4eea52d5ac
https://chibest.tistory.com/99
https://docs.swift.org/swift-book/ReferenceManual/Attributes.html
Attributes — The Swift Programming Language (Swift 5.5)
Attributes There are two kinds of attributes in Swift—those that apply to declarations and those that apply to types. An attribute provides additional information about the declaration or type. For example, the discardableResult attribute on a function d
docs.swift.org
'🍎iOS프로그래밍 > 겨울방학 특강' 카테고리의 다른 글
Swift - URL Scheme을 알아보자, 다른 앱 호출하기 (0) | 2022.01.24 |
---|---|
Swift - 뷰컨트롤러간 데이터 이동 (2) | 2022.01.20 |
Swift-프로토콜과 델리게이트 (0) | 2022.01.14 |
Swift문법 - 고차함수 (0) | 2022.01.13 |
Swift문법 - 배열 Array (0) | 2022.01.09 |
댓글