0

我正在使用这行代码来遍历一个数组

for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) {

来自 AS3 背景,我认为“长度”会给我一个数组/对象的长度,但我刚刚发现“计数”似乎做同样的事情,我找不到任何关于使用“长度”,但它似乎工作。

谁能告诉我..

  1. 什么是“长度”以及它如何/为什么在该行中工作?
  2. 计数和长度有什么区别?
  3. 哪个更好用?

感谢您的任何建议。

4

2 回答 2

3

假设GameP是一个字典,调用objectForKey:返回一个类型为 的对象id。因此,您试图lengthid. 这将编译得很好,但在运行时假设“groundMap”的对象是一个数组可能是错误的。数组只有count方法,没有length方法。

对于每个循环迭代,您还可以从字典中访问一个对象。你真的应该这样写你的代码:

NSArray *groundMap = [GameP objectForKey:@"groundMap"];
NSUInteger count = groundMap.count;
for (int i = 0; i < count ; i += 5) {
}

这更容易阅读,编译器可以进行更好的错误检查。它也更有效率。

于 2012-10-29T17:26:57.057 回答
0

首先,您必须知道字典中对象的类别GameP。如果NSArray你必须使用count这里是没有办法使用另一种方法。

你可以在课堂上找到length方法。NSSString

于 2012-10-29T17:26:42.957 回答