NSInteger:spa
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 typedef long NSInteger; typedef unsigned long NSUInteger; #else typedef int NSInteger; typedef unsigned int NSUInteger; #endif
由定义可知,在32系统下NSInteger 即为int,在64位系统下NSInteger位long。苹果的官方文档中老是推荐用NSInteger。code
总结:NSInteger与int的区别是NSInteger会根据系统的位数(32or64)自动选择int的最大数值(int or long)。orm
当须要使用int类型的变量的时候,能够像写C的程序同样,用int,也能够用NSInteger,但更推荐使用NSInteger,由于这样就不用考虑设备是32位的仍是64位的。对象
在开发中只需使用NSInteger便可。blog
NSNumber:Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。开发
NSInteger是基础类型,可是NSNumber是一个类。若是想要存储一个数值,直接用NSInteger是不行的,好比在一个Array里面这样用:文档
NSArray *array= [[NSArray alloc]init]; [array addObject:3];//会编译错误
这样是会引起编译错误的,由于NSArray里面放的须要是一个类,但‘3’不是。这个时候须要用到NSNumber:字符串
NSArray *array= [[NSArray alloc]init]; [array addObject:[NSNumber numberWithInt:3]];
Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。get
例如如下封装方法:string
+ (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;
相互之间的转换
1: NSString <==> NSInteger
NSInteger转化 NSString类型: [ NSString stringWithFormat: @"%d" , NSInteger]; NSString转化 NSInteger类型: NSInteger = [ NSString intValue ]
2 : NSString <==> NSNumber
将NSNumber转换为NSString NSNumber *A; NSString *B; NSNumberFormatter* numberFormatter = [[NSNumberFormatteralloc] init]; B = [numberFormatter stringFromNumber:A];
将NSString转换为NSNumber NSString *ss=@"224.34129"; NSNumber*result; NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
result=[f numberFromString:ss];
if(!(result))
{
result=ss;
}
NSLog(@"%.2f",[result floatValue]);
3.NSString 与 int ,float,double,NSInteger之间的转换
NSString *teststring = @"32.54" ; int i = [teststring intValue ]; float i1 = [teststring floatValue ]; double i2 = [teststring doubleValue ]; NSInteger i3 = [teststring integerValue ]; NSString *tostring = nil ; tostring = [ NSString stringWithFormat: @"%d" ,i]; NSLog ( @"tostring-int:%@",tostring); tostring = [ NSString stringWithFormat: @"%.3f" ,i1]; NSLog ( @"tostring-float:%@",tostring); tostring = [ NSString stringWithFormat: @"%e" ,i2]; NSLog ( @"tostring-double:%@",tostring);
4.nsstring和float 还有int之间的转换
NSString *tempA = @"123"; NSString *tempB = @"456"; 1,字符串拼接 NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB]; 2,字符转int int intString = [newString intValue]; 3,int转字符 NSString *stringInt = [NSString stringWithFormat:@"%d",intString]; 4,字符转float float floatString = [ newString floatValue]; 5,float转字符 NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];