Сохранение / получение значений из Objective-C++ в Objective-C
Как я могу сохранить короткое int 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 ответ
Решение
Нет необходимости выполнять какое-либо преобразование между 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.