我想使用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数据类型进行此操作?
答案 0 :(得分:1)
如果您正在使用ARC(您可能应该这样做),那么创建id
类型对象的C数组会比它的价值更麻烦。通常(非calloc
方式)您需要free
和id
数组,而 还需要注释id
个对象id __strong myArray = …
另一件非常违反直觉但要确保myArray
中的元素正确释放的要求是在释放myArray之前将myArray
的每个元素显式设置为nil。
所以无论如何,这是一个很麻烦的问题,有几个问题可以解决。您应该使用NSMutableArray
NSMutableArrays
。使用最新版本的llvm
,您仍然可以使用“C style”语法访问数组,例如myArray[x][y] = someObject;
。