在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 |
... |
... |
... |