1

我正在构建一个基于视图的插件架构,其中我有一个单独的插件进程,并希望为每个插件分配一个NSView. 我已经研究过CARemoteLayerServer/ClientIOSurfaceRef使用,但它们都只允许一个绘图视图。一个插件的视图可能有很多子视图,并且可以像它是主应用程序的一部分一样接收事件。有什么办法可以做到这一点?

4

1 回答 1

2

没有办法NSView直接跨流程边界进行交互。也就是说,CARemoteLayerServer支持层树,而不仅仅是单个层。这意味着您的 UI 肯定需要使用层来构建,但NSView在事件处理方面仍然很有用。

客户端和服务器都可以在它们自己的内部包含共享远程层,NSViews因为您可以创建一个层托管NSView并将共享层分配给它。然后NSView可以拦截鼠标和键盘事件,这些事件可以通过 XPC 连接传递给其他进程,以供其自己NSView(包含共享层)进行解释。我不完全确定这会有多快,因为我自己没有尝试过,但我认为它几乎与与普通视图交互一样即时。

如果您有兴趣更多地使用远程层,有一个很好的示例项目以及随附的 SO帖子,您可以查看

于 2013-02-04T05:38:25.887 回答