cocoa - 命令行工具与 Cocoa 应用程序交互

标签 cocoa command-line appkit foundation

我有一个基于 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/

相关文章:

batch-file - BATCH : How to read a . txt 文件删除具有特定文件名的某些列出的文件

xcode - 在 Xcode 中使用 NSTask 在 AppKit 应用程序中运行时,Rust 1.4.0(或更高版本)cargo/rustc 崩溃

swift - 如何滚动才能在 SwiftUI 中托管的 NSCollectionView 上工作?

iphone - 如何使用 Quartz 和 CGLayers 在背景上绘制 Sprite ?

objective-c - localizedCaseInsensitiveCompare 似乎不适用于瑞典语字符

iphone - CFReadStreamRef 和可用字节大小

windows - 将磁盘驱动器映射到存储 Controller

swift - Swift 中的 NSObject 子类 : hash vs hashValue, isEqual vs ==

SVN - 仅显示版本化的本地文件(命令行)?

swift - 由于 Style.spinning 已弃用,如何在 macOS Catalina 上正确添加微调器?