int、 NSInteger、 NSUInteger、NSNumber之间的区别
来源:互联网 发布:thinkphp oa系统源码 编辑:程序博客网 时间:2024/05/18 03:43
int : 当使用int类型定义变量的时候,可以像写C程序一样,用int也可以用NSInteger,推荐使用NSInteger ,因为这样就不用考虑设备是32位还是64位了。
NSUInteger:是无符号的,即没有负数
NSInteger:是基础类型,是有符号的。
NSNumber:是一个类,比如在字典,数组中就只能存NSNumber,而不能存放int或者NSInteger这些基本类型。
这里补充一下NSUInteger曾经遇到过的一个坑:
首先创建一个tableview,然后在上面添加一个view
UIView *filterview=[[UIView alloc]init]; filterview.backgroundColor=[UIColor redColor]; filterview.frame=CGRectMake(0,-120, 100, 40*alarmsTypeArray.count+60); [self.tableView addSubview:filterview];
如图:
如果我们把frame代码改为下面代码就发现不显示了
NSMutableArray *alarmsTypeArray=[NSMutableArray array]; [alarmsTypeArray addObject:@"a"]; [alarmsTypeArray addObject:@"b"]; [alarmsTypeArray addObject:@"c"]; UIView *filterview=[[UIView alloc]init]; filterview.backgroundColor=[UIColor redColor]; filterview.frame=CGRectMake(0,-(40*alarmsTypeArray.count), 100, 40*alarmsTypeArray.count+60); [self.tableView addSubview:filterview];
为啥呢,按理说正常啊,那么打印一下这个-(40*alarmsTypeArray.count)吧
CGFloat y=-(40*alarmsTypeArray.count); NSLog(@"%f",y); filterview.frame=CGRectMake(0,y, 100, 40*alarmsTypeArray.count+60);
为啥y的值不是-120呢?我们点alarmsTypeArray.count中的count进去看看才发现问题所在,原来这个count是个NSUInteger属性
那么就对了,alarmsTypeArray.count是NSUInteger(无符号的整数类型)因此-(40*alarmsTypeArray.count)是不行的!这里要先转为CGFloat或者int,NSInteger,之后在加负号
所以代码应该这么写
NSMutableArray *alarmsTypeArray=[NSMutableArray array]; [alarmsTypeArray addObject:@"a"]; [alarmsTypeArray addObject:@"b"]; [alarmsTypeArray addObject:@"c"]; UIView *filterview=[[UIView alloc]init]; filterview.backgroundColor=[UIColor redColor]; CGFloat y=40*alarmsTypeArray.count; NSLog(@"--------%f",y); filterview.frame=CGRectMake(0,-y, 100, 40*alarmsTypeArray.count+60); [self.tableView addSubview:filterview];
我们再来打印并看看效果:
ok,view也正常显示了!
阅读全文
0 0
- int、 NSInteger、 NSUInteger、NSNumber之间的区别
- int, NSInteger, NSUInteger, NSNumber的区别
- int,NSInteger,NSUInteger,NSNumber区别
- iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别!Nsnumber
- int、NSInteger、NSUInteger、NSNumber的区别和联系
- int、NSInteger、NSUInteger、NSNumber的区别和联系
- int、NSInteger、NSUInteger、NSNumber的区别和联系
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int、NSInteger、NSUInteger、NSNumber的关系
- IOS int,NSInteger,NSUInteger,NSNumber
- 区分 int,NSInteger,NSUInteger,NSNumber
- 安卓 集成微信(一)实现微信登录详解
- jqeury checkbox全选/反选 ,子选项全选,全选选中
- Android Studio下的串口程序开发实战
- ubuntu迁移已安装的软件到新的机器上
- Android 中application 详解
- int、 NSInteger、 NSUInteger、NSNumber之间的区别
- springboot logback-spring配置mybatis日志输出
- Flume对接Kafka的实例
- 怎么查看浏览器的cookie?以chrome谷歌浏览器为例
- Android Studio 使用Java 8 混淆出错
- 全链路spring cloud sleuth+zipkin
- idea中无法编译maven项目 java:-source 1.5 中不支持 diamond 运算符
- 学习笔记TF022:产品环境模型部署、Docker镜像、Bazel工作区、导出模型、服务器、客户端
- JavaScript客户端存储