当我试图在函数中返回此数组时,为什么会出现错误"数组初始值设定项必须是初始化列表"?

mic*_*den 5 arrays xcode initialization objective-c

我是来自Java,而且我对Objective C很新.无论如何,我有这个静态方法,它旨在制作一个数组的副本 (如果有更好的方法来实现这一点,请告诉我,但我我更多地问这个问题,以便找出我为什么会遇到这个错误,以及如何在将来避免这样的错误.)我遇到了一些问题,但就在我认为我把它们全部整理好的时候,我得到了这个错误看起来像XCode http://i43.tinypic.com/35nal3n.png

这是界面中的方法:

+ (float[]) copyArray: (float[]) array withLength: (int) length;
Run Code Online (Sandbox Code Playgroud)

以下是实现中的方法:

+ (float[]) copyArray: (float[]) array withLength: (int) length
{
    float copiedArray[length];
    for (int i = 0; i < length; i++)
    {
        copiedArray[i] = array[i];
    }
    return copiedArray;
}
Run Code Online (Sandbox Code Playgroud)

Dar*_*ust 6

如果您真正想要的是将前N个元素从一个C数组复制到另一个已存在的数组中,那么最好的方法就是简单地使用memcpy:

memcpy(targetArray, sourceArray, sizeof(sourceArray[0]) * numElements);
Run Code Online (Sandbox Code Playgroud)

sizeof(sourceArray[0])计算阵列中的类型的字节大小(在你的情况下,它等同于sizeof(float).


Bry*_*hen 4

方法/函数无法返回 C 数组。你应该做这个

+ (void) copyArrayFrom:(float *)array to:(float *)toArray withLength: (unsigned) length
{
    for (int i = 0; i < length; i++)
    {
        toArray [i] = array[i];
    }
}
Run Code Online (Sandbox Code Playgroud)