我正在解决一个需要我在 64 位 Cocoa 应用程序中执行以下操作的问题:
- 从我的应用程序中生成一个 32 位 Cocoa 辅助工具(命令行工具)。此帮助程序将打开一个文件(准确地说是一部快速电影)并使用 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,因为似乎涉及的代码更少。如果这两种方法都不是很好,有没有更好的方法来做到这一点?