我的程序中需要一个很好的老式二维整数数组,但无论我如何尝试将其声明为 ivar,然后使用@property/@synthesize,我都会收到这样或那样的编译器投诉。
我声明
int spotLocations[10] [10]
作为伊娃。
这么多工作,但随后@property/@synthesize 过程从未通过集合。
最佳答案
你不能这样做。数组变量在 C 中永远不能是左值,这意味着您永远不能声明返回数组的函数,因为不可能将函数的结果分配给数组变量(因为它不能是左值)。
属性只是声明返回类型的函数的一种简写方式。由于函数永远不能返回数组,因此您永远不能声明一个数组属性。
如果你绝对需要像这样移动矩阵,你可以将它包装在一个结构中,它可以是左值:
typedef struct {
int value[10][10];
} matrix;
...
@property matrix spotLocations;
当然,访问位置有点复杂,你必须使用
spotLocations.value[x][y]
关于objective-c - 如何使用 c 型数组作为 ivar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834137/