函数在ObjC for iPhone中返回一个数组

时间:2011-02-17 22:00:33

标签: iphone objective-c macos sdk

您好 我试图让这个函数返回一个数组!这里出了什么问题?

-(char[10])print01:(int)int11{ //error: declared as method returning an array
    char arrayT[10];

    for(int i=0;i<8;i++)
    {
        if ((int1-n1)>=0){
            arrayT[i]='1';
            int1-=n1;
        }
        else 
            arrayT[i]= '0';
        n1=n1/2;
    }

    return arrayT[]; // incompatible types in return
}

我想这样称呼它:

char array1[10] = [self print01:(int)int1]; //error: invalid initializer

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您无法在C或Objective-C中返回数组。你可以期望的最好的方法是返回一个指向数组的指针,但是如果你要这样做,请确保你没有返回指向堆栈数组的指针(就像你的那样)。

答案 1 :(得分:0)

最好的方法是使用NSArray(对象当然,我假设上面的代码是简化的样本,但你总是可以使用NSNumber)。或者,您可以返回一个指向数组的指针,这在C中是常见的C(而扩展的目标c)不能返回数组。不幸的是,这需要为阵列分配内存并使用手动内存管理(malloc / free),这取决于阵列的生命周期,可以是从麻烦到糟糕的任何地方。我的建议是获取一个char * dest参数,并将字符作为dest [i]

插入到数组中