在objective-c中传递和接收多维基元(int)数组

在objective-c中传递和接收多维基元(int)数组,objective-c,multidimensional-array,Objective C,Multidimensional Array,我有两种方法。一个需要返回int[]],另一个需要将int[]]作为参数。我最初使用的是一个NSMutableArray,其值为NSMutableArray,但有人告诉我这样做是为了与当前的一些代码兼容。我不知道该怎么做。我甚至不确定我在谷歌上搜索对了。不管怎样,这就是我现在拥有的 +(int [][consantValue]) getCoefficients { int coefficiennts [constantValue2][constantValue1] = { {0,1,2}

我有两种方法。一个需要返回int[]],另一个需要将int[]]作为参数。我最初使用的是一个NSMutableArray,其值为NSMutableArray,但有人告诉我这样做是为了与当前的一些代码兼容。我不知道该怎么做。我甚至不确定我在谷歌上搜索对了。不管怎样,这就是我现在拥有的

+(int [][consantValue]) getCoefficients
{
    int coefficiennts [constantValue2][constantValue1] = { {0,1,2}, {3,4,5}, {6,7,8} };
    return coefficients;
}
在return语句中,我得到错误“Array initilizer必须是初始值设定项列表”


我还必须使用int[][]并用另一种方法将其重建为NSMutableArray的NSMutableArray,但我希望如果有人能给我一个关于第一部分的提示,我可以自己解决第二部分,尽管如果有人对此有任何建议,我也会很感激。谢谢。

对于固定大小的数组,这是一种简单的方法要将结构用于存储,请执行以下操作:

typedef struct {
 int at[constantValue2][constantValue1];
} t_mon_coefficients;
然后声明按值返回的方法:

+ (t_mon_coefficients)coefficients;
并将值作为参数传递:

- (void)setCoefficients:(const t_mon_coefficients)pCoefficients;
如果结构较大,则应通过引用传递:

// you'd use this like:
//   t_mon_coefficients coef;
//   [SomeClass getCoefficients:&coef];
+ (void)getCoefficients:(t_mon_coefficients* const)pOutCoefficients;

- (void)setCoefficients:(const t_mon_coefficients*)pCoefficients;

但是有很多方法可以做到这一点。

我正试着去想这个问题。我记得几年前在我的c类中使用了structs。我将仔细研究一下这个问题并找出答案。不过,一个可能很愚蠢的问题是:为什么要使用“t\mon”_“作为前言?@MichelleJS a)传递数组的一个问题是所有权。当使用原始数组时,它是通过引用实现的,但是您可以使用结构,并避免一些麻烦,因为它可以通过值传递。存储很容易管理。例如,
返回系数返回对局部变量的引用(崩溃)。b) 最好在类型前面加前缀,这样它们就不会与其他类型冲突。因此,您可能会看到CG图形结构(不透明类型)、“NS”以及基础结构,以及Objc类型的“NS”。“t_mon_”或“mon”正是我给示例加前缀的方式(如“MY*”)。@MichelleJS如果在同一翻译/作用域中有两个类型具有相同名称,那么出现的问题是编译器将禁止它,就像
void f(){int a;char a;}
是不合法的。谢谢您的帮助。我从来没有真正让它工作过,但那个想要它的家伙回来了,在他也弄不明白后改变了主意。所以我要把你的答案标记为正确。@MichelleJS不客气——你对哪一部分有问题?