从另一个进程卸载我的插件
我正在考虑添加 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论