0

我正在使用objective-c开发一个iphone应用程序,我无法从类变量中创建一个数组,例如......

我有一个名为的类Cube,我正在尝试创建一个名为 map 的类的实例,它是一个数组

Cube map[10][10];

Xcode 然后说这是一个错误并建议我这样做

Cube *map[10][10];

当我这样做时^我无法访问我在类中定义的方法之一Cube,现在这不是我的所有方法,它只是一种在我尝试调用它时不起作用的方法。这个方法与其他方法唯一不同的是我向它传递了一个参数。类Cube声明和定义都可以完美编译。

谁能向我解释如何在不将其转换为指针的情况下创建具有 2 维的类。另外,为什么 xcode 建议我将其设为指针,为什么当我这样做时该方法不起作用?

4

3 回答 3

2

您可能想要使用 Cocoa 样式数组,即NSArrayNSMutableArray代替 C 样式数组。它更加灵活,旨在与 Objective-c 对象一起使用。看看这个关于使用 Cocoa 数组的简单教程:http: //iphonelearning.wordpress.com/2011/08/24/nsarray-and-nsmutablearray/

于 2012-07-01T01:18:48.770 回答
2

Objective-C 中的标准方法是创建NSArray(or NSMutableArray)一个NSArray(or NSMutableArray)。假设您希望在创建数组对象后能够操作数组,您的代码将如下所示:

NSMutableArray* cubeGrid = [NSMutableArray new]; // Note that this code assumes you are using ARC.

// add row 1
NSMutableArray* cubeRow1 = [NSMutableArray arrayWithObjects:cube1,cube2,cube3,nil]; // you will need to add cube 4 to 10 in the real code
[cubeGrid addObject:cubeRow1];

// add row 2
NSMutableArray* cubeRow2 = [NSMutableArray arrayWithObjects:cube11,cube12,cube13,nil]; // you will need to add cube 14 to 20 in the real code
[cubeGrid addObject:cubeRow2];

// and you will create the rest of the rows and add to the cubeGrid array

要访问元素,您将执行以下操作:

for (id cubeRow in cubeGrid) {
    if ([cubeRow isKindOfClass:[NSArray class]]) {
        for (id cube in (NSArray*)cubeRow) {
            if ([cube isKindOfClass:[Cube class]]) {
                // Do things with cube
            }
        }
    }
}

您可能还需要仔细检查您尝试访问的方法是否在头文件中声明。

于 2012-07-01T02:47:04.497 回答
0

您可能想看看这个答案。

于 2012-07-01T01:32:48.913 回答