ios開發 int,NSInteger,NSUInteger,NSNumber


分享一下,在工作工程中遇到的一些不留心的地方:

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等類型一樣可以這樣轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM