在Objective C中创建NSObject的动态2D指针数组

时间:2013-06-18 00:28:20

标签: objective-c arrays pointers dynamic

我想使用C指针数组存储NSObject的2D数组。我读了另一个StackOverflow问题,该问题表明可以按如下方式执行此操作:

id myArray [10][10];

但是我想动态分配内存,因为我不知道手表有多大。

我理解如何为标准C变量类型创建2D指针数组,但我不知道如何为id类型创建它。如果我使用int,我会做这样的事情:

int ** myArray = (int**) calloc (10, sizeof(int*));
for(int i = 0; i<10; i++) {
    myArray[i] = (int *) calloc(10, sizeof(int));
}

如何使用id数据类型进行此操作?

1 个答案:

答案 0 :(得分:1)

如果您正在使用ARC(您可能应该这样做),那么创建id类型对象的C数组会比它的价值更麻烦。通常(非calloc方式)您需要freeid数组,而 还需要注释id个对象id __strong myArray = …另一件非常违反直觉但要确保myArray中的元素正确释放的要求是在释放myArray之前将myArray的每个元素显式设置为nil。

所以无论如何,这是一个很麻烦的问题,有几个问题可以解决。您应该使用NSMutableArray NSMutableArrays。使用最新版本的llvm,您仍然可以使用“C style”语法访问数组,例如myArray[x][y] = someObject;