objective-c - 如何使用 c 型数组作为 ivar?

标签 objective-c arrays properties directive

我的程序中需要一个很好的老式二维整数数组,但无论我如何尝试将其声明为 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/

相关文章:

objective-c - cocoa sqlite 数据库文件

java - 对数组的元素求和,我做错了什么?

尽管赋值,Javascript 类属性仍返回未定义

C 使用指针从矩阵中提取数组

ios - 在 Objective-C 中调用 setter

c# - 在不知道属性类型的情况下从属性和列表值中获取属性值

ios - Objective-C iOS7检测事件的电话和麦克风可用性

objective-c - 在 block 内使用 self 的方法

objective-c - 如何将 NSEvent 添加到属性列表?

c++ - 将 double 转换并连接到字节数组