NSUInteger C数组

时间:2016-02-22 17:34:50

标签: objective-c c arrays

在Google搜索TDD原则时,我遇到了此演示文稿

http://qualitycoding.org/files/BowlingGame-ObjectiveC.pdf

我不熟悉它。有一个这样的声明:

NSUInteger _rolls[21];
NSUInteger _currentRoll;

从代码中我发现_rolls是一个包含几个uint的数组。但我从未见过这个。这是C的一部分吗?

我会更熟悉

NSArray *rolls;
NSUInteger aRoll = rolls[index];

[21]是否描述了该数组的计数或最大限制?

2 个答案:

答案 0 :(得分:2)

NSUInteger _rolls[21];声明了NSUInteger类型的C数组,其大小为21,而不是NSArray

考虑如何在C中声明一个数组:

type arrayName [ arraySize ];

使用整数:

int rolls[5] = {1, 2, 3, 4, 5};

它的工作方式相同。

括号中的数字是数组的大小,它可以容纳的最大值。

答案 1 :(得分:0)

实际上,NSArray不能包含NSUInteger,您只能将对象放在Objective-C数组中。

如果您想将NSUInteger存储在一个数组中,您必须先将它们包装起来:

NSArray *rolls = [NSArray arrayWithObject: @(17)];
NSUInteger aRoll = rolls[0].unsignedIntegerValue;

或者,你可以使用像你在PDF中看到的那样的C数组......