开发者

float* array to NSArray, iOS

I have a float pointer array and I would like to convert it to an NSArray.

Is there a better way to do it than to iterate through the float* and add each entry to the NSArray?

I have:

float* data = new float[elements];
fill up开发者_StackOverflow data from binary ifstream

I want to avoid doing something like:

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

Is there some convenience / more efficient method to copy a large chunk of floats into an NSArray?

Regards,

Owen


You’ve got two problems: first, you can’t store a float in an NSArray, since NSArrays will only hold Objective-C objects. You’ll need to wrap then in an object, probably NSNumber or NSValue.

As to your original question, since you have to create the objects anyway, there isn’t a better method. I’d recommend the for loop:

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

Keep in mind that number will be autoreleased. If you’re dealing with a lot of numbers, that can get out of hand pretty quickly with memory management, so you might do this instead:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜