티스토리 뷰
안녕하세요? 멍구입니다.
오늘은 iOS 개발을 하다보면 사용하게 되는(?) CGFloat 타입프로퍼티인 leastNonzeroMagnitude, leastNormalMagnitude에 대해서 살펴보겠습니다.
어떤 경우게에사용하는 타입프로퍼티들인지, 어떤 의미의 프로퍼티인지 개발자 문서를 통해 가볍게 살펴보겠습니다. 🤗
leastNonzeroMagnitude
leastNonZeroMagnitude는 최소한의 양의 부통소수점(CGFloat)을 반환하는 타입 프로퍼티입니다. 0보다 크면서 0에 가장 가까운 값을 반환하여 사용할 때 사용할 수 있을 것 같네요.
앞서 말했듯이, 해당 변수는 타입 프로퍼티입니다. CGFloat에 직접 접근해서 값을 반환할 수 있습니다. leastNonZeroMagnitude는 swift 표준 라이브러리에 포함되어 있습니다.
CGFloat.leastNonzeroMagnitude
Discussion
leastNonzeroMagnitude는 모든 양의 숫자들 보다 작거나 같은 값을 반환합니다. 하지만 0보다는 큽니다. subnormal values(비정규 값?)를 지원한다면, 또 다른 타입프로퍼티, leastNormalMagnitude보다도 값이 작다고 합니다.
만약 subnormal values를 지원하지 않는경우에 leastNormalMagnitude와 leastNonzeroMagnitude의 값은 같다고 합니다.
이어서 leastNormalMagnitude를 보겠습니다!
leastNormalMagnitude
leastNormalMagnitude 또한 leastNonzeroMagnitude와 같이 0보다 큰 가장 작을 수 있는, subnormal 값의 양의 숫자를 반환하는데요. subnormal value를 지원하지 않는다면, leastNonZeroMagnitude와 값은 동일하다고 합니다. leastNormalMagnitude 또한 swift 표준 라이브러리에 포함되어 있습니다.
Discussion
leastNormalMagnitude 또한 0으로 지정하지 않으면서, 0과 유사한 효과를 내고 싶을때 사용할 수 있습니다.
가령 tableView의 델리게이트 메서드인 heightForRowAt 등의 반환값으로도 사용할 수 있는데요. 이 경우, 0으로 높이값을 지정하면 default 높이 값인 44로 지정되는 경우가 있는데(0을 0으로 제대로 인식하지 못하는 경우 존재, 이유는 과제로 남기겠습니다(?))
이때 위의 CGFloat.leastNonZeroMagnitude, CGFloat.leastNormalMagnitude를 사용하면 0으로 설정한것과 동일한 효과를 낼 수 있어 유용합니다.
그렇다면 모두들 이 둘의 값이 어떻게 출력되는지 다들 궁금하실텐데요. 🤯
한번 playground에서 두개의 값을 출력해볼까요?
와우... 확실히 leastNormalMagnitude와 leastNonzeroMagnitude의 값이 다른 것을 보실 수 있습니다.
두 개의 값이 다르다는건 비정규 표현 값? 을 지원하는 환경이란 뜻이겠죠?..
둘 다 0보다 크면서 매우 0에 근접한 값을 가지지만, leastNonzeroMagnitude의 값이 leastNormalMagnitude의 값보다 좀 더 작은 것을 보실 수 있습니다. ^-^//
오늘은 iOS 개발 중에 마주치게 되는 swift 표준 라이브러리에 포함되어있는 CGFloat의 타입프로퍼티, leastNonzeroMagnitude, leastNormalMagnitude에 대해서 알아보았는데요.
생각보다 테이블 뷰 셀의 높이 설정에 활용되는 것 외에도 값이 부동소수점 값 중 0.0이 아닌 가장 작은 양의 숫자를 활용하는 경우가 있을 수 있으니 알고 있으면 좋겠죠?
즐거운 하루 되시길 바라며, 많은 의견 부탁드립니다. 감사합니다. 🥰
'iOS 개발' 카테고리의 다른 글
iOS 디자인패턴, MVC대신 MVVM 패턴을 사용하는 이유 (2) | 2020.06.25 |
---|---|
iOS MVVM 디자인패턴, Model-View-ViewModel 개요 (0) | 2020.06.24 |
swift 문자열 처리 메서드, split과 components 간단 비교 (0) | 2020.06.09 |
Vision VNRequest, Handler, Observation 역할 및 사용방법 (0) | 2020.06.03 |
iOS NLTagger로 문자열 어휘, 이름 단위 토큰화 하기 (0) | 2020.06.02 |
- Total
- Today
- Yesterday
- 백준알고리즘
- 프로토콜
- Swift 알고리즘
- ios
- swift언어
- 부스트코스
- 컬렉션
- swift reduce
- swift 문자열
- Collection
- 스위프트
- swift
- createML
- 김프매매
- 자연어처리
- swift string
- 개발자문서
- uikit
- swift알고리즘
- swift 기초
- 알고리즘문제
- 프로그래머스
- swift문제
- 프로그래머스swift
- Protocol
- 알고리즘
- 백준swift
- SwiftUI
- publisher
- CoreML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |