我有一个浮点指针数组,我想将它转换为 NSArray。
有没有比遍历 float* 并将每个条目添加到 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];
是否有一些方便/更有效的方法可以将大量 float 复制到 NSArray 中?
问候,
欧文
最佳答案
你有两个问题:首先,你不能在 NSArray
中存储一个 float
,因为 NSArray
只会保存 objective-c 对象。然后,您需要将其包装在一个对象中,可能是 NSNumber
或 NSValue
。
至于你原来的问题,因为无论如何你都必须创建对象,所以没有更好的方法。我推荐 for
循环:
for (int i = 0; i < elements; i++) {
NSNumber *number = [NSNumber numberWithFloat:floatArray[i]];
[myArray addObject:number];
}
请记住,number
将被自动释放。如果您要处理很多的数字,内存管理可能很快就会失控,因此您可以改为这样做:
for (int i = 0; i < elements; i++) {
NSNumber *number = [[NSNumber alloc] initWithFloat:floatArray[i]];
[myArray addObject:number];
[number release];
}
关于iphone - float* array 到 NSArray, iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888163/