浮动*数组到NSArray,iOS

时间:2011-02-03 15:37:48

标签: iphone ios arrays floating-point nsarray

我有一个浮点指针数组,我想把它转换为NSArray。

有没有更好的方法来迭代浮点*并将每个条目添加到NSArray?

我有:

float* data = new float[elements];
fill up data from binary ifstream

我想避免做类似的事情:

NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:elements];
for (int i=0;i<elements;i++)
{
 [mutableArray addObject:[NSNumber numberWithFloat:data[i]]];
}
NSArray *array = [NSArray arrayWithArray:array];

是否有一些方便/更有效的方法将大块浮动数据复制到NSArray中?

此致

欧文

1 个答案:

答案 0 :(得分:5)

您遇到两个问题:首先,您无法在float中存储NSArray,因为NSArray只能保存Objective-C对象。您需要在对象中进行换行,可能是NSNumberNSValue

至于你原来的问题,既然你必须创建对象,那么没有更好的方法。我推荐for循环:

for (int i = 0; i < elements; i++) {
    NSNumber *number = [NSNumber numberWithFloat:floatArray[i]];
    [myArray addObject:number];
}

请注意number将自动释放。如果您正在处理 lot 数字,那么内存管理可能会很快失控,所以您可能会这样做:

for (int i = 0; i < elements; i++) {
    NSNumber *number = [[NSNumber alloc] initWithFloat:floatArray[i]];
    [myArray addObject:number];
    [number release];
}