массив float * для NSArray, iOS - PullRequest
       15

массив float * для NSArray, iOS

3 голосов
/ 03 февраля 2011

У меня есть массив указателей с плавающей точкой, и я хотел бы преобразовать его в 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?

С уважением,

Owen

1 Ответ

5 голосов
/ 03 февраля 2011

У вас есть две проблемы: во-первых, вы не можете хранить float в NSArray, поскольку NSArray s будет содержать только объекты 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...