iphone - 将值从 Objective-C++ 存储/检索到 Objective-C

标签 iphone objective-c ios xcode objective-c++

如何在 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];

最佳答案

对于简单的字节缓冲区,不需要在 Objective C++ 和 Objective C 之间进行任何转换。您可以在 Objective C++ 和 Objective C 类之间传递一个 short int 指针。

如果您的意思是,如何将 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 风格的缓冲区。

关于iphone - 将值从 Objective-C++ 存储/检索到 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407024/

相关文章:

ios - 在 Intel Mac 上构建或运行 Mac Catalyst 应用程序?

iphone - initWithFrame 与 initWithStyle

iphone - 在 CATiledLayer -setNeedsDisplay 之后,并非所有图 block 都重绘

ios - Xcode:添加一个在出现静态分析器警告或错误时失败的测试?

objective-c - 从 c 函数访问 objective-c 变量

objective-c - 在 Cocoa/Cocoa Touch 中,有没有一种方法可以在运行时为类的 ivars 动态分配或赋值?

ios - 线程 1 : Signal Sigabrt iOS App Crash

iphone - 如何从缓冲区而不是音频文件中获取耳机插孔音频?

ios - 非消耗品和动态应用内购买

iphone - 运行 montouch 应用程序时的 JIT/AOT 问题