一个类的数组

时间:2012-07-01 01:13:10

标签: iphone objective-c

我正在使用objective-c中的iphone应用程序,我在使用类变量制作数组时遇到问题,例如......

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

Cube map[10][10];

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

Cube *map[10][10];

当我这样做的时候虽然^我无法访问我在类Cube中定义的我的方法之一,现在这不是我的所有方法,它只是一个单独的方法,我试图随时无法工作叫它。这个方法与其他方法唯一不同的是我将参数传递给它。 Cube类声明和定义都可以完美地编译。

任何人都可以向我解释如何使用2维创建一个类而不将其转换为指针。另外为什么xcode建议我把它作为一个指针,为什么我这样做时方法不起作用?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

Objective-C中的标准方法是创建NSArray(or NSMutableArray) NSArray(或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
            }
        }
    }
}

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

答案 2 :(得分:0)

您可能需要查看此this答案。