我有一个浮点指针数组,我想把它转换为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中?
此致
欧文
答案 0 :(得分:5)
您遇到两个问题:首先,您无法在float
中存储NSArray
,因为NSArray
只能保存Objective-C对象。您需要在对象中进行换行,可能是NSNumber
或NSValue
。
至于你原来的问题,既然你必须创建对象,那么没有更好的方法。我推荐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];
}