从另一个进程卸载我的插件

发布于 2024-10-14 11:48:02 字数 666 浏览 6 评论 0原文

我正在考虑添加 NSDockTilePlugIn 到我的应用程序,但我遇到了一些奇怪的行为——可以理解的行为,但我想看看是否有办法解决它。

当我从 dmg 运行我的应用程序或将(dmg 版本的)应用程序保留在 Dock 中时,Dock 会加载我的 .docktileplugin 捆绑包。
当应用程序退出时,插件会收到一条带有 nil NSDockTile *setDockTile: 消息(根据文档)。但是,该插件继续运行,并且我无法弹出(卸载、分离)dmg,除非我杀死 Dock(我想注销也可以)。

我尝试通过 NSDistributedNotificaitonCenter (来自应用程序的非 dmg 版本)发送通知来告诉它卸载,但控制台告诉我现在我加载了两个相同的扩展插件,并且未定义将执行哪一个。
即使 [[NSBundle bundleWithPath:...] unload] 返回 YES,我仍然无法弹出 dmg。

I'm toying with adding an NSDockTilePlugIn to my application, but I've come across some strange behavior -- understandable behavior, but I'd like to see if there is a way around it.

When I run my app from the dmg or keep the (dmg version of the) app in the Dock, the Dock loads my .docktileplugin bundle.
When the application quits, the plugin receives a setDockTile: message with a nil NSDockTile * (as per the documentation). However, the plugin keeps running, and I cannot eject (unmount, detach) the dmg unless I kill the Dock (I suppose logging out would work too).

I've tried sending a Notification through the NSDistributedNotificaitonCenter (from a non-dmg version of the app) to tell it to unload, but the Console tells me that now I have two of the same docktileplugin loaded, and it is undefined which one will execute.
And even though [[NSBundle bundleWithPath:...] unload] returns YES, I still cannot eject the dmg.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文