cocoa - 如何将 Cocoa "sheet"发布到另一个程序的窗口上?

标签 cocoa modal-dialog daemon interprocess interaction

使用Apple OS X Cocoa框架,如何在另一个进程的窗口上发布工作表(下滑模式对话框)?

编辑:澄清一下:

我的应用程序是一个 Finder 扩展,用于执行 Subversion 版本控制 ( http://scplugin.tigris.org/ )。我的应用程序的一部分是一个插件(Finder 的上下文菜单项);然而,我的应用程序的大部分位于单独的守护进程中。出于多种原因,我们选择将几乎所有代码放入守护进程中;该插件仅定义菜单本身,并将 Apple-Events 传递给守护进程。

有时,守护进程需要提示用户提供更多信息。它可以为此在屏幕上弹出一个窗口,但这是破坏性的(随机定位),在我看来,这里的工作流程是合法模式的,例如“选择一个文件,从菜单中选择“提交”,提供提交注释,进行操作。”

进程间合作(例如传递某种引用)是可以接受的:两个进程都是我的,但我想避免将工作表的代码绑定(bind)到主进程中。

最佳答案

真的,听起来你试图让进程间通信发生在 View 级别,这并不是 Cocoa 通常的工作方式。如果你将层分开得更多一点,事情就会容易得多。

为什么不想将工作表代码放入其他进程中?它是 View 代码,而 View 代码本质上是特定于流程的。这里正确的做法可能是向您的插件代码添加一些通用的模态表支持,以及您的守护进程可以调用该代码的 IPC 调用。如果你能让它工作的话,尝试将 View 对象发送到远程进程将是一场噩梦。

您正在用这种方法对抗框架。

关于cocoa - 如何将 Cocoa "sheet"发布到另一个程序的窗口上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65343/

相关文章:

c++ - 使用什么 C++ 库来编写跨平台服务/守护进程?

macos - 系统正在将不需要的项目添加到我的应用程序中的自定义上下文菜单中

multithreading - Cocoa线程无法访问Cocoa API

objective-c - 如何替换 cocoa 中的第一个字节

iphone - 我的一些 NSString 是字母数字的。如何判断哪些包含数字,哪些不包含数字?

linux - 让 xvfb-run 作为后台进程并注销

javascript - React 中的条件渲染在切换时导致重新安装

javascript - Twitter Bootstrap 模式隐藏事件只触发一次

java - 如何停止 Java 运行整个代码而不等待用户的 Gui 输入

qt - 需要在 Qt 中为 Symbian/S60 编写服务/守护进程