볼때마다 헷갈려서 적어두고, Swift에서의 Integer의 개념에 대해서도 함께 살펴보자

 

 

세 가지는 모두 숫자를 나타내기 위한 데이터 타입이다!

int - C에서 왔고, primitive data type
NSInteger

- 현재 사용하고 있는 아키텍처(플랫폼)에 맞게 사이즈가 자동으로 설정되는 애플의 Foundation 프레임워크에 있는 특별한 primitive data type
- 실제로 int를 재정의함

NSNumber - Foundation 프레임워크의 NSNumber 클래스 인스턴스를 생성하는 것

 

즉, int와 NSInteger는 둘다 객체가 아니다!

 

'객체가 아니다' 란?

- 미리 정의된 사이즈가 있기 때문에 힙에 동적 메모리 할당을 하지 않는다.

- 스택에 생성되므로 포인터로 변수의 값을 접근하지 않아도 된다.

 

유사한 데이터타입
int, NSInteger, CGFloat, CGPoint, CGRect, 등

 

NSNumber를 사용하는 이유는?
체를 만드는 데 꼭 다른 객체를 사용하는 몇몇의 Cocoa 클래스들이 있기 때문(primitive type들은 사용할 수 없음)

ex) NSArray

 

 

Swift에서의 Integer

- Integers는 signed(positive, zero, negative)이거나 unsigned(positive, zero)임

- Swift provides signed and unsigned integers in 8, 16, 32, and 64 bit forms.

- UInt8, Int32, ...

Int

Swift provides an additional integer type, Int, which has the same size as the current platform’s native word size:

  • On a 32-bit platform, Int is the same size as Int32.
  • On a 64-bit platform, Int is the same size as Int64.
UInt

Swift also provides an unsigned integer type, UInt, which has the same size as the current platform’s native word size:

  • On a 32-bit platform, UInt is the same size as UInt32.
  • On a 64-bit platform, UInt is the same size as UInt64.

 

NOTE
Use UInt only when you specifically need an unsigned integer type with the same size as the platform’s native word size. If this isn’t the case, Int is preferred, even when the values to be stored are known to be nonnegative. => This aids code consistency and interoperability.

 

 

 

Ref.

https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

https://beankhan.tistory.com/18

'iOS > iOS 기본기' 카테고리의 다른 글

[iOS] Layout - Safe Area  (0) 2019.12.09
[iOS] frame vs. bounds  (0) 2019.12.09
[iOS] NSOperation vs. GCD  (0) 2019.11.29
[iOS] UIKit framework 계층도  (1) 2019.11.25
[iOS] NSCopying protocol  (0) 2019.11.25

+ Recent posts