我正在解决一个需要我在64位Cocoa应用程序中执行以下操作的问题:
在Cocoa中有很多方法可以实现这一点,但从我收集的内容来看,这是我可以采取的两种方法。
所以我对StackOverflowers的问题是,哪个选项“更好”?
哪种更好的做法?
哪个更有效率?
我倾向于选项2,因为似乎涉及的代码较少。如果这两种方法都不是很好,那么有更好的方法吗?
答案 0 :(得分:3)
你说子进程将是一个应用程序。不要使用NSTask - 它会混淆Launch Services。 (如果你的意思是它是一个辅助工具,好像一个好奇的专家用户可以从命令行运行它,那么NSTask就可以了。)
DNC将以任何一种方式工作,但如果子进程确实是一个应用程序,请不要使用NSTask + NSPipe使用的分布式对象。
答案 1 :(得分:2)
NSDistributedNotificationCenter可以正常工作,但请记住,您的应用程序无法“保证”接收操作系统的分布式通知。我在实践中并没有真正看到这一点,但在选择技术时要记住这一点。
您未提及的另一个选项是分布式对象。分布式对象完全是为此目的而制作的。它处理序列化或设置在进程之间或通过网络工作的代理对象。文档有点缺乏,它不支持Cocoa的一些新部分,比如绑定,它不是很容易使用,但是当我正在以复杂的方式协同工作的两个进程时,我仍然更喜欢它。