使用什么Objective-C IPC机制?

时间:2012-08-04 01:02:30

标签: objective-c ipc nsnotifications distributed-objects

我有一个应用程序,它维护一组自定义类的嵌套对象。该应用程序需要能够与多个具有非常相似的自定义提供程序补丁的Quartz Composer组合一起分享它的数据。 QC组合物在此应用程序中运行。

QC补丁只能在其输入上处理有限的对象类型,因此我的自定义类似乎不会在那里工作。我也犹豫是否要将这些作品硬件连接到我的应用程序,这样就需要在添加新的合成时添加新的Objective-C代码。

我已经尝试过分布式对象,即使我被警告​​过它们。我发现它们太不可靠了。由于我的QC补丁以60fps的速度运行,他们试图频繁访问售卖的对象,以至于在崩溃之前我无法正常关闭连接。

现在,我正在使用分布式通知,每次发生大致变化的事情时,都会向我的QC补丁发送更新词典。我将自定义类序列化为字典,以便我可以执行此操作,然后在最多5个接收此数据的修补程序实例中的每个字典中取消序列化字典。这有效,但似乎效率低下,我担心潜在的延迟和丢弃消息的警告。我的补丁需要以非常及时的方式接收更新(少于0.1秒,速度越快越好),并且没有丢弃。

用于将应用程序中的数据传输到自定义QC修补程序的最佳机制是什么?

谢谢! 亚当

1 个答案:

答案 0 :(得分:0)

如果你想要它是高级别的,XPC是要走的路(它甚至有一个很好的更新,可以直接在Mountain Lion中使用Objective-C(请查看NSXPC前缀类和协议))。如果这太慢了(它不应该因为XPC非常轻量级),你可以尝试回到马赫消息,这几乎是每种IPC在OS X上使用的东西。但是!通过MIG生成马赫消息是一个痛苦的屁股,所以你应该首先尝试XPC,只有当它变得太慢时,尝试马赫消息。

可以找到有关如何创建XPC服务的概述here