標籤:
在Objective-c中有int的資料類型,那為什麼還要使用數字對象NSNumber?這是因為很多類(如NSArray)都要求使用對象,而int不是對象。
NSNumber就是數字對象,我們可以使用NSNumber對象來建立和初始化不同類型的數字對象。
#import <Foundation/Foundation.h>
NSNumber *myNumber,*floatNumber,*intNumber,*number1;
//建立integer類型對象
intNumber = [NSNumber numberWithInteger:123];
NSLog(@"%i",[intNumber integerValue]);
//建立long類型對象
myNumber = [NSNumber numberWithLong:0xababab];
NSLog(@"%lx",[myNumber longValue]);
//建立char類型對象
myNumber = [NSNumber numberWithChar:‘K‘];
NSLog(@"%c",[myNumber charValue]);
//建立float類型對象
floatNumber = [NSNumber numberWithFloat:123.00];
NSLog(@"%f",[floatNumber floatValue]);
//建立double類型對象
myNumber = [NSNumber numberWithDouble:112233e+15];
NSLog(@"%lg",[myNumber doubleValue]);
//判斷兩個對象的值是否相等
if ([intNumber isEqualToNumber:floatNumber] == YES ) {
NSLog(@"值相等");
} else {
NSLog(@"值不相等");
}
//比較兩個對象的值大小
if ( [intNumber compare:myNumber] == NSOrderedAscending) {
NSLog(@"左邊的數字小");
} else {
NSLog(@"左邊的數字大");
}
//初始化執行個體
number1 = [[NSNumber alloc] initWithInt:1000];
NSLog(@"%d",[number1 intValueunsigned];
[number1 release];
對於每個基本類型,類方法都為這它分配了一個NSNumber對象,並將其設定為指定的值,這些方法都是以numberWith開始的,之後是類型,如numberWithLong。
此外,還可以使用執行個體方法為先前分配的NSNumber對象設定指定的值,這些都是以initWith開頭,比如initWithLong。
如:
建立和初始化類方法 |
初始化執行個體方法 |
取值執行個體方法 |
numberWithChar: |
initWithChar: |
charValue |
numberWithShort: |
initWithShort: |
shortValue |
... |
... |
... |
Objective-c之數字對象(NSNumber)