ios开发 int,NSInteger,NSUInteger,NSNumber
2016-07-06 17:36
453 查看
分享一下,在工作工程中遇到的一些不留心的地方:
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;
例子:
5、NSString与NSInteger的相互转换
char float等类型一样可以这样转换。
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等类型一样可以这样转换。
相关文章推荐
- Java并发包:双端阻塞队列(BlockingDeque)
- LABjs、RequireJS、SeaJS 哪个最好用?为什么?
- UIViewContentMode,iOS图片排版
- Using Confluent’s JDBC Connector without installing the entire platform
- 项目部署&Ant build
- 使用UICollectionView注意事项及用UICollectionView实现图片轮播器
- 教你使用UIWindow实现窗口的切换
- BLUETOORH INIT
- requirejs
- UVA - 424 Integer Inquiry
- CodeForces 687C The Values You Can Make
- 等前台框架和IE8,9,10等高版本 不兼容的解决方法
- IOS之UILabel富文本
- DispatcherServlet request workflow
- kafka hdfs connect 会产生只有一个记录的小文件
- Codeforces Round #360 (Div. 1) C. The Values You Can Make(DP)
- UISegmentedControl在storyboard下的使用,支持横评
- mysql ”Invalid use of null value“ 解决方法
- iOS小技巧-使用UUID+keychain替代udid方案
- COM中导出GUID