【问题标题】:What Objective-C IPC mechanism to use?使用什么 Objective-C IPC 机制?
【发布时间】:2023-03-08 18:50:01
【问题描述】:

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

QC 补丁只能处理其输入的有限对象类型,因此我的自定义类似乎无法在那里工作。我也很犹豫是否将组合硬连接到我的应用程序中,这种方式需要我在添加新组合时添加新的 Objective-C 代码。

我已经尝试过分布式对象,尽管我被警告过不要使用它们。我发现他们太不可靠了。由于我的 QC 补丁以 60 fps 的速度运行,因此它们会频繁地尝试访问出售的对象,以至于我无法在失败时优雅地关闭连接,然后才会崩溃。

现在,我正在使用分布式通知将更新字典发送到我的 QC 补丁,每次发生变化时,大约是每秒一次。我将我的自定义类序列化为字典,以便我可以执行此操作,然后在最多 5 个接收此数据的补丁实例中对字典进行反序列化。这可行,但似乎效率低下,我担心潜在的延迟和丢失消息的警告。我的补丁需要非常及时地接收更新(小于 0.1 秒,越快越好),并且不掉线。

对我来说,将数据从我的应用程序获取到我的自定义 QC 补丁的最佳机制是什么?

谢谢! 亚当

【问题讨论】:

标签: objective-c ipc nsnotifications distributed-objects


【解决方案1】:

如果你希望它更高级,XPC 是最好的选择(它甚至有一个很好的更新,可以直接在 Mountain Lion 中与 Objective-C 一起使用(查看NSXPC 前缀类和协议) ))。如果这太慢了(不应该因为 XPC 非常轻量级),你可以尝试回退到 mach 消息,几乎每种 IPC 在 OS X 上使用的东西。但是!通过 MIG 生成 mach 消息非常麻烦,因此您应该先尝试 XPC,只有当它太慢时,才尝试使用 mach 消息。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2011-05-21
    • 1970-01-01
    相关资源
    最近更新 更多