【发布时间】:2010-10-04 23:37:10
【问题描述】:
我正在解决一个需要我在 64 位 Cocoa 应用程序中执行以下操作的问题:
- 从我的应用程序中生成一个 32 位 Cocoa 辅助工具(命令行工具)。此帮助程序将打开一个文件(准确地说是 QuickTime 电影)并使用仅限 32 位的 API(Quicktime-C API)访问有关该文件的信息
- 从 32 位进程收集的数据需要传回 64 位应用程序。
- 64 位应用程序应等到 32 位进程完成后再继续
在 Cocoa 中有很多方法可以实现这一点,但据我所知,这是我可以采用的两种方法。
选项 1:带有管道的 NSTask
- 使用 NSTask 生成 32 位进程
- 将 NSTasks 标准输出重定向到管道,并在 64 位进程中从该管道读取数据。
- 解析管道中的数据,这将涉及将字符串从标准输出转换为数据(整数、浮点数、字符串等)
选项 2:带有 NSDistributedNotificationCenter 的 NSTask
- 使用 NSTask 生成 32 位进程
- 当数据在 32 位进程中准备好时,向分布式通知中心发送一个 NSNotification,并在事件中包含一个包含所有相关数据的字典。
- 在 64 位应用中订阅相同的 NSNotification
所以我对 StackOverflowers 的问题是,哪个选项“更好”?
哪种做法更好?
哪个更有效率?
我倾向于选项 2,因为似乎涉及的代码更少。如果这两种方法都不是很好,有没有更好的方法来做到这一点?
【问题讨论】:
标签: cocoa events event-handling ipc nsnotifications