Сохранение / получение значений из Objective-C ++ в Objective-C - PullRequest
2 голосов
/ 23 февраля 2012

Как я могу сохранить краткое целевое число Objective-C ++, как показано ниже, в массиве Objective-C и преобразовать его обратно в Objective-C ++ позже?Я попытался следующее безуспешно.Любая помощь будет отличной!

short int *tmpbuffer = ( short int*)malloc(sizeof(short int)*length*inData);

int count = 0;
for (count = 0; count < length*inData; count++)
{
    tmpbuffer[count] = (short int) (inbuffer[count] * 0x7fff);
}

size = fwrite(tmpbuffer, 1, sizeof(short int)*length*inData,fp);

   [fwriteSections addObject:[NSNumber numberWithShort:tmpbuffer]];
   [fwriteSections addObject:[NSNumber numberWithShort:sizeof(short int)*length*inchannels]];
   [fwriteRows addObject:fwriteSections];

1 Ответ

2 голосов
/ 23 февраля 2012

Нет необходимости выполнять какое-либо преобразование между Objective C ++ и Objective C для простого байтового буфера.Вы можете просто передать указатель short int между классами Objective C ++ и Objective C.

Если вы имеете в виду, как вы можете преобразовать байтовый буфер short int в NSArray, тогда вы на правильном пути, просто сделайте следующее:

short int *buffer = malloc(size * sizeof(short int));
NSMutableArray *shortArray = [NSMutableArray arrayWithCapacity:size];
for (NSUInteger i = 0; i < size; i++) {
    [shortArray addObject:[NSNumber numberWithShort:buffer[i]]];
}

Я бы не рекомендовал этот подход, хотя он неэффективен, вам лучше просто придерживаться буфера стиля C.

...