NSNumber는 기본 데이터 타입(int, float, double)을 객체로 감싸는 래퍼 클래스이다.
Objective-C에서 컬렉션 클래스는 기본 타입이 아닌, 객체 타입만 저장할 수 있기 때문에 래핑하는데 주로 사용된다.
또한 비교나 연산작업을 할 때 더 편리한 기능들이 제공된다.
NSNumber 객체를 생성하고, value를 뽑아내는 예시 코드는 아래와 같다.
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// NSNumber 객체 생성
NSNumber *boolNumber = [NSNumber numberWithBool:YES];
NSNumber *charNumber = [NSNumber numberWithChar:'A'];
NSNumber *doubleNumber = [NSNumber numberWithDouble:3.14159];
NSNumber *floatNumber = [NSNumber numberWithFloat:3.14];
NSNumber *intNumber = [NSNumber numberWithInt:42];
NSNumber *integerNumber = [NSNumber numberWithInteger:123456];
// NSNumber 객체에서 값 추출
BOOL boolValue = [boolNumber boolValue];
char charValue = [charNumber charValue];
double doubleValue = [doubleNumber doubleValue];
float floatValue = [floatNumber floatValue];
int intValue = [intNumber intValue];
NSInteger integerValue = [integerNumber integerValue];
// 값 출력
NSLog(@"Boolean Value: %d, %@",boolValue, boolValue ? @"YES" : @"NO"); //1, YES
NSLog(@"Char Value: %c", charValue); //65
NSLog(@"Double Value: %f", doubleValue); //3.1416
NSLog(@"Float Value: %f", floatValue); //3.1400
NSLog(@"Integer Value: %d", intValue);//42
NSLog(@"Integer Value (NSInteger): %ld", (long)integerValue); //123,456
// NSNumber 객체를 문자열로 변환하여 출력
NSLog(@"String Value of Double: %@", [doubleNumber stringValue]); //3.14159
}
return 0;
}
다른 언어에서 래퍼 클래스랑 동일하다고 생각해도 되겠다.
기본값만으로는 한계가 있을 때, 이를 확장해서 편리하게 사용하고 여러 함수, 컬렉션 등에서 타입을 맞출 때 필요하면 사용하자
'iOS Developer > Objective-C' 카테고리의 다른 글
11. Objective-C Pointers 포인터 (0) | 2024.05.09 |
---|---|
10. Objective-C Arrays 배열 (0) | 2024.05.07 |
8. Objective-C Blocks 블록 (0) | 2024.05.07 |
7. Objective-C 함수(call by value, call by reference) (0) | 2024.05.06 |
6. Objective-C 반복문/조건문 (0) | 2024.05.06 |