我正在为 OS X 制作一个网络客户端应用程序。UI 的一部分——我们称之为前端——启动网络会话,然后是网络会话本身。
我希望应用程序将会话生成到单独的进程中。换句话说,应用程序将有一个前端进程,然后是 0..N 个会话进程。前端进程将有一个完整的 Cocoa UI(NSWindow+menubar 等),但每个会话也是如此。一旦启动,会话将大部分独立于前端 - 几乎不需要进程间通信。
这是棘手的一点 - 我不希望这看起来是多个应用程序。我希望使用单个 Dock 磁贴控制主要的前端进程以及所有会话进程(即单击 Dock 磁贴,所有应用程序窗口都以 z 顺序出现,根据 OS X 标准行为) ,我希望应用程序菜单中的应用程序名称相同,并且我希望 Dock 磁贴具有对应于所有会话窗口的窗口列表(由单独的进程运行)。
这一定是可能的——Chrome 做了一些非常相似的事情。有没有人大致了解他们认为我可以如何做到这一点?
更新:仔细查看后,我现在认为这实际上不可能以任何干净的方式进行。尤其是 Chrome,它在单个父进程中创建其所有 NSWindows,然后只是从帮助进程中编组页面呈现。如果没有其他人可以添加任何内容,我会在几天内将此标记为“已回答”。