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

来源:互联网 发布:java电信计费系统 编辑:程序博客网 时间:2024/06/10 06:19

      • 从一个隐蔽的bug说起
      • NSUInteger转成int

从一个隐蔽的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,不会进入循环.

0 0
原创粉丝点击