分享一下,在工作工程中遇到的一些不留心的地方:
1.當需要使用int類型的變量的時候,可以像寫C的程序一樣,用int,也可以用NSInteger,但更推薦使用NSInteger,因為這樣就不用考慮設備是32位的還是64位的。
2.NSUInteger是無符號的,即沒有負數,NSInteger是有符號的。
3.有人說既然都有了NSInteger等這些基礎類型了為什么還要有NSNumber?它們的功能當然是不同的。
NSInteger是基礎類型,但是NSNumber是一個類。如果想要在NSMutableArray里存儲一個數值,直接用NSInteger是不行的,比如在一個NSMutableArray里面這樣用:
NSMutableArray *array = [[NSMutableArray alloc]init];
[array addObject:[NSNumber numberWithInt:88]];
這樣是會引發編譯錯誤的,因為NSMutableArray里面放的需要是一個類,但‘88’不是類。
Cocoa提供了NSNumber類來包裝(即以對象形式實現)基本數據類型。
例如以下創建方法:
+ (NSNumber *) numberWithChar: (char) value;
+ (NSNumber *) numberWithInt: (int) value;
+ (NSNumber *) numberWithFloat: (float) value;
+ (NSNumber *) numberWithBool: (BOOL) value;
將基本類型數據封裝到NSNumber中后,就可以通過下面的實例方法重新獲取它:
- (char) charValue;
- (int) intValue;
- (float) floatValue;
- (BOOL) boolValue;
- (NSString *) stringValue;
例子:
NSNumber *num = [NSNumber numberWithInt:88]; NSInteger integer = [num intValue];
5、NSString與NSInteger的相互轉換
NSInteger integerNumber = 888; NSString * string = [NSString stringWithFormat:@"%d",integerNumber]; NSLog(@"string is %@", string);
integer = [string intValue]; NSLog(@"integer is%d", integerNumber);
char float等類型一樣可以這樣轉換。