C++ 通知来自c++;到iOS应用程序中的UI
我正在使用音频单元在iOS 7上开发一个音频生成器,并在cpp文件中呈现示例。我的问题是,在渲染期间,我需要通知输出量到C++中计算的UI。C++ 通知来自c++;到iOS应用程序中的UI,c++,ios,objective-c,audio,C++,Ios,Objective C,Audio,我正在使用音频单元在iOS 7上开发一个音频生成器,并在cpp文件中呈现示例。我的问题是,在渲染期间,我需要通知输出量到C++中计算的UI。 我怎样才能做到这一点?如果我可以从cpp文件中调用objective C方法,那就足够了。事实上,这里有两个问题需要解决: 从C++到Objul-C 跨越从CoreAudio渲染线程到UI线程的线程边界 从C++到Objto-C是简单的:编译你的C++文件作为Objto-C++(用重命名.mm 一旦这样做,C++类可以包含ObjyE-C对象指针成员,
我怎样才能做到这一点?如果我可以从cpp文件中调用objective C方法,那就足够了。事实上,这里有两个问题需要解决:
-
从C++到Objul-C
- 跨越从CoreAudio渲染线程到UI线程的线程边界
从C++到Objto-C是简单的:编译你的C++文件作为Objto-C++(用<代码>重命名.mm
一旦这样做,C++类可以包含ObjyE-C对象指针成员,方法实现可以向Objtovi-C对象发送消息。相反,ObjaveC++对象可以管理C++对象并调用它们。 要跨越线程边界,请使用Grand Central Dispatch
@interface ObjectiveCBar;
- (void) onVolumeEvent:(float) volume;
@end
class Foo
{
void notifyUI(float volume)
{
dispatch_async(dispatch_get_main_queue(), ^
{
[objectiveCObject onVolumeEvent:volume];
});
}
ObjectiveCBar *objectiveCObject;
}
<>你也可以使用代码来取消C++和Objul-C部分。为此,您需要在队列中传递Objective-C对象您可以将代码编译为Objective-C++-最简单的方法是将.cpp重命名为.mm。然后它将正确编译,你可以(在大多数情况下)混合Objto-C和C++,但是你喜欢。谢谢你的快速回复!这会使cpp代码有所不同吗?我的意思是,如果我将cpp代码编译为Objective-C++,那么代码执行可能会慢一些。。。Objul-C++与C++一样快吗?这和objective-c和c的关系是一样的。谢谢你的回答。我只想问最后一个问题:如果我将cpp重命名为files,而不更改内容,它会改变代码的性能吗?我的意思是换分机。声音的生成,以及我如何创建向量,都是用C++完成的,而且工作得很好。这样做没有性能问题,尽管从架构的角度来看,分离关注点始终是一个好主意。你可能想结束一个架构,它是一个C++ -ObjuleC++Objule-C三明治。