Objective c obj-c中与NSArray一起使用的长度混淆

Objective c obj-c中与NSArray一起使用的长度混淆,objective-c,ios,nsarray,nsobject,Objective C,Ios,Nsarray,Nsobject,我用这行代码遍历一个数组 for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) { for(int i=0;i

我用这行代码遍历一个数组

for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) {
for(int i=0;i<[GameP objectForKey:@“groundMap”]长度];i+=5){
来自AS3背景,我假设“length”会给出数组/对象的长度,但我刚刚发现“count”似乎做了同样的事情,我找不到任何关于使用“length”的信息,但它似乎有效

谁能告诉我

  • “长度”是什么?它是如何/为什么在该行工作的
  • 计数和长度有什么区别
  • 哪个更好用

  • 谢谢您的建议。

    首先,您必须在字典中了解对象的类别
    GameP
    。 如果那
    NSArray
    你必须使用
    count
    这里没有办法使用其他方法


    您可以在
    NSSString
    类中找到
    length
    方法。

    首先,您必须知道字典中对象的类
    GameP
    。 如果那
    NSArray
    你必须使用
    count
    这里没有办法使用其他方法


    您可以在
    NSSString
    类中找到
    length
    方法。

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

    对于每个循环迭代,您也从字典中访问一个对象。您确实应该这样编写代码:

    NSArray *groundMap = [GameP objectForKey:@"groundMap"];
    NSUInteger count = groundMap.count;
    for (int i = 0; i < count ; i += 5) {
    }
    
    NSArray*groundMap=[GameP objectForKey:@“groundMap”];
    NSU整数计数=groundMap.count;
    对于(int i=0;i

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

    假设
    GameP
    是一个字典,调用
    objectForKey:
    返回一个类型为
    id
    的对象。因此,您尝试在
    id
    上调用
    length
    方法。这可以很好地编译,但在r直到现在,假设“底图”的对象是数组可能是错误的。数组只有
    count
    方法,没有
    length
    方法

    对于每个循环迭代,您也从字典中访问一个对象。您确实应该这样编写代码:

    NSArray *groundMap = [GameP objectForKey:@"groundMap"];
    NSUInteger count = groundMap.count;
    for (int i = 0; i < count ; i += 5) {
    }
    
    NSArray*groundMap=[GameP objectForKey:@“groundMap”];
    NSU整数计数=groundMap.count;
    对于(int i=0;i

    这更易于阅读,编译器可以更好地进行错误检查。它也更高效。

    您能否澄清
    [GameP objectForKey:@“groundMap”]
    返回的内容?您能否澄清
    [GameP objectForKey:@“groundMap”]
    返回的内容?