숫자객체
지금까지 다룬 정수, 부동소수점 수, long 같은 모든 숫자 형은 Objective-C 언어의 기본 데이터 형이었
다. 다실 말해, 이것들은 객체가 아니었다. 그러므로 이것에 머세지 같은 것을 보내는 일은 불가능하다.
그런데 이런 형 값을 객체로 다뤄야 할 때가 있다.
예를 들어, Foundation 객체인 NSArray는 값을 저장할 수 있는 배열을 생성하도록 해준다. 이 값들은
객체여야 하기 때문에 이 배열들에 기본 데이터 형을 바로 저장할 수는 없다. 그 대신, 기본 숫자 데이터
형을 참조하려면(char 데이터 형도 포함) NSNumber 클래스를 사용하여 이 데이터 형들에게서 객체를 생
성할 수 있다.
- 소스코드
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSNumber * myNumber , *floatNumber, *intNumber; //integer value NSInteger myInt; intNumber = [NSNumber numberWithInt:100]; myInt = [intNumber integerValue]; NSLog(@"%li", (long) myInt);
// long int myNumber = [NSNumber numberWithLong:0xabcdef]; NSLog(@"%lx",[myNumber longValue]);
//char value myNumber = [NSNumber numberWithChar: 'X']; NSLog(@"%c", [myNumber charValue]);
// float value floatNumber = [NSNumber numberWithFloat: 100.00]; NSLog(@"%g", [floatNumber floatValue]);
//double myNumber = [NSNumber numberWithDouble: 12345e+15]; NSLog(@"%lg", [myNumber doubleValue]);
//wrong access here NSLog(@"%li", [myNumber integerValue]); //test two numbers if ([intNumber isEqualToNumber:floatNumber] == YES) NSLog(@"Numbers are equal"); else NSLog(@"Numbers are not equal"); //test if one number is < , ==, or > second num if ([intNumber compare:myNumber] == NSOrderedAscending) NSLog(@"First number is less than second"); else NSLog(@"first number is not less than second"); return 0; } |
NSNumber 클래스에는 초기값이 있는 NSNumber 객체를 생성하는 메서드가 많다. 다음 예를 보자. intNumber = [NSNumber numberWithInteger: 100];
이 코드는 값이 100인 정수에게서 객체를 생성한다.
NSNumber 객체에서 받아 오는 값은 그 안에 저장된 값과 데이터 형이 일치해야 한다.
각 기본 값에 대해서는 NSNumber 객체를 생성하고 지정한 값으로 설정하는 클래스 메서드가 존재한다.
이 메서드들은 numberWithLong:과 numberWithFloat:처럼 numberWith로 시작하고, 그 뒤에 데이터 형이 붙는다. 게다가 인스턴스 메서드를 사용하여 이미 생성해 놓은 NSNumber 객체의 값을 원하는 대로 지정할 수 있다. 인스턴스 메서드들은 initWithLong:과 initWithFloat:처럼 모두 initWith로 시작한다.
- NSNumber 생성과 값을 받는 메소드
- 실행화면
'C/Objective C > Objective C' 카테고리의 다른 글
Objective C Framework(프레임워크) (0) | 2012.07.25 |
---|---|
Objective C protocol(프로토콜) (0) | 2012.07.23 |
Objective C category(카테고리) 예제 따라하기 (0) | 2012.07.23 |
Objective C enum 예제 따라하기 (0) | 2012.07.23 |
Objective C 정적변수 예제 따라하기 (0) | 2012.07.23 |