我有一个基于 Cocoa 文档的应用程序(文本编辑器),我希望能够从命令行与其交互。
例如,我想将其设置为在命令行上输入 git/svn 提交消息的编辑器。
假设我使用 Foundation 创建命令行工具,我的命令行工具与 GUI 应用程序通信的最佳方式是什么?
显然,我可以使用标准打开事件让我的应用程序打开特定文件,但我还需要命令行应用程序等到 GUI 应用程序完成文档处理(用户关闭编辑器窗口)后再退出(类似于TextMate 命令行工具中的 mate -w file.txt
或其他各种 Mac 文本编辑器中的等效工具。
TextMate 2 uses a socket file 。这是最好的方法吗?如果可能的话,我想使用更高级别的东西,也许是 NSDistributedNotificationCenter
。
最佳答案
NSDistributedNotificationCenter
可能会正常工作,如果这是您喜欢的抽象级别。它的接口(interface)类似于NSNotificationCenter
。关于NSDistributedNotificationCenter
:
- 仅限于 plist 类型
- 允许删除通知
- “很贵”
- 延迟时间可能无法预测
- 沙盒应用无法使用
userInfo:
参数
如果您想要传输大量信息,或者想要更强大/可预测的东西,您可能会发现套接字更可取。
关于cocoa - 命令行工具与 Cocoa 应用程序交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12852784/