iphone - 结合 Objective-C 和 C++ 的正确方法?

标签 iphone c++ objective-c ios ios5

我正在开发一款可以对输入音频进行实时处理的应用程序。我找到了 this我认为我可以用作起点的网站。然而,所有提供的功能都是用 C++ 编写的。

我想首先开始的最简单的事情是将 UILabel 的文本更改为函数接收的一些值:

OSStatus renderCallback(void *userData, AudioUnitRenderActionFlags *actionFlags,
                    const AudioTimeStamp *audioTimeStamp, UInt32 busNumber,
                    UInt32 numFrames, AudioBufferList *buffers)

我将所有函数粘贴到 View 的@implementation 中,并且能够通过将扩展名更改为 .mm 来进行编译。我创建了一个 UILabel 属性,但 renderCallback 函数无法访问它。

显然,只是将这些函数粘贴到@implementation 中并不是执行此操作的正确方法。我该如何以正确的方式做到这一点?

最佳答案

虽然 C++ 基本上可以按原样进入 .mm 文件,但这并不总是有效(例如,如果你有一个名为 id 的变量,它会与 Objective-C )。您也可以将大部分 C++ 代码放在一个单独的文件中,只将适当的 C++ .h 文件 #import 放入您所在的 .mm 中创建一个 UILabel

UILabel 的要求而言;您需要创建一个 NSString* 值。一种可能是 stringWithFormat:,例如

int myInt = 0;
const char *myString = "string";
id myObject = @"object";
NSString* myString = [NSString stringWithFormat:@"here is a number: %d, here is a C string: %s, here is an object: %@", myInt, myString, myObject];

您可以想象从您的 C++ 代码中获取您想要的任何原始值,并使用如上所示的格式化字符串将它们转换为单个标签值。

关于iphone - 结合 Objective-C 和 C++ 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11573620/

相关文章:

iphone - 将 float 转换为 NSData 并返回到 Objective-C

iphone - 如何让我的应用程序支持广告?

c++ - 避免模​​偏差的快速方法

单个对象上的 c++ unordered_map 迭代器

ios - 如何在 Objective C 中异步加载数据 UITableview 滚动和核心数据获取

android - 向 Django 后端验证 Android 或 iPhone 应用程序

没有数字的 iPhone 图标角标(Badge)

c++ - 有什么方法可以通过 Qt Designer 添加 QSystemTrayIcon

ios - 如何完全以编程方式添加 UINavigationBar?

iphone - 从 NSURL 转换为 NSURLRequest 时丢失 a/