我制作一个简单的NSArray,然后从该数组中获取一个随机索引并将其存储为int,但是我得到一个警告说它应该是一个long int,即使我只期望它返回0,1或2不是它的问题,但我不明白为什么。
NSArray *randomWordList = [NSArray arrayWithObjects:@"Hello", @"Test", @"Send", nil];
int randomWordIndex = rand() % [randomWordList count];`
答案 0 :(得分:4)
NSArray的count
方法返回NSUInteger
,这是64位版本的unsigned long
。编译器警告您的原因是因为int
包含的数字范围小于long
,所以它会警告您可能会丢失数据。
只需将int randomWordIndex
更改为NSUInteger randomWordIndex
。
答案 1 :(得分:0)
你可以施展它。您必须同意编译器无法知道元素计数,因为数组是动态分配的,因此它只是假定最大值,即NSUInteger。