A.H:
-(NSArray *) returnarray:(int) aa
{
unsigned char arry[1000]={"aa","vv","cc","cc","dd"......};
NSArray *tmpary=arry;
return tmpary;
}
交流转换器:
#include "a.H"
main (){
// how do I call returnarray function to get that array in main class
}
我需要在main中使用该数组,我需要在单独的类中保留该数组函数。
有人可以提供代码示例来执行此操作吗?
答案 0 :(得分:4)
这些行:
unsigned char arry[1000]={"aa", "vv", "cc", "cc", "dd", ...};
NSArray *tmpary=arry;
应改为:
unsigned char arry[1000]={"aa", "vv", "cc", "cc", "dd", ...};
NSMutableArray * tmpary = [[NSMutableArray alloc] initWithCapacity: 1000];
for (i = 0; i < 1000; i++)
{
[tmpary addObject: [NSString stringWithCString: arry[i] encoding:NSASCIIStringEncoding]];
}
这是因为C风格的数组(例如,int arr[10];
)与实际的NSArray对象不同,后者声明如上。
事实上,根据文档中的定义,我们不知道NSArray
实际上是什么,除了您可以使用的方法之外。这与C风格的数组形成鲜明对比,你可以保证它只是一个连续的内存块,大小足以保存你请求的元素数量。
答案 1 :(得分:1)
C风格的数组不是NSArray,所以你的arry(其定义有一些拼写错误,至少是unsighned
部分)的分配是无效的。另外,你调用arry一个char
的数组,但你给它分配了一个以空字符结尾的字符串数组。
通常,您需要循环并将C样式数组的所有元素添加到NSArray。
答案 2 :(得分:0)
我不确定你为什么必须在主要的地方做这件事。如果您想要全局,可以通过在另一个文件中声明全局来实现。也就是说,你不能将普通的C数据阵列分配给目标C NSArray,它本质上是完全不同的。