iOS数组count操作(NSUInteger)的安全性

从一个隐蔽的bug说起

int i = 0;
 for(; i < [emptyArr count] - 1;){
    //条件成立,数组越界
    id obj = [emptyArr objectAtIndex:i];
 }

由于数组count方法返回值类型是NSUInteger,当数组的size为0的时候,一个NSUInteger类型的0减去1结果还是NSUInteger类型,所以结果不是-1而是一个随机的正整数。

NSUInteger转成int

int i = 0;
 for(; i < (int)[emptyArr count] - 1;){
    id obj = [emptyArr objectAtIndex:i];
 }

当数组为空时,(int)[emptyArr count] - 1结果是-1,不会进入循环.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值