函数返回iPhone的ObjC中的数组

函数返回iPhone的ObjC中的数组,iphone,objective-c,macos,sdk,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; }

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

-(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
}

有什么建议吗?

您不能在C或Objective-C中返回数组。您最好希望返回指向数组的指针,但如果要这样做,请确保不要返回指向堆栈上数组的指针(就像您的一样).

不能在C或Objective-C中返回数组。最好的方法是返回指向数组的指针,但如果要这样做,请确保不要返回指向堆栈上数组的指针(就像您的一样)。

最好的方法是使用NSArray(当然是对象,我假设上面的代码是简化的示例,但您始终可以使用NSNumber)。或者,您可以返回指向数组的指针,这在C中很常见,因为C(扩展为目标C)无法返回数组。不幸的是,这需要为数组分配内存并使用手动内存管理,(malloc/free),这取决于阵列的生命周期,可能会带来麻烦,也可能会很糟糕。我的建议是使用char*dest参数,并将char作为dest[i]插入阵列中。

最好的方法是使用NSArray(当然是对象,我假设上面的代码是简化的示例,但您始终可以使用NSNumber)。或者,您可以返回指向数组的指针,这在C中很常见,因为C(扩展为目标C)无法返回数组。不幸的是,这需要为数组分配内存并使用手动内存管理,(malloc/free),这取决于阵列的生命周期,可能会造成麻烦,也可能很糟糕。我的建议是使用char*dest参数,并将char作为dest[i]插入阵列中

所以你建议我读整数而不是字符?事实上我想要4个8元素的数组。糟糕,我在iPhone上输入了它,但忘了--我把它改成了字符。你建议我读整数而不是字符?事实上我想要4个8元素的数组。糟糕,我在iPhone上输入了它,忘了--我忘记了我想说的是chars
char array1[10] = [self print01:(int)int1]; //error: invalid initializer