gpt4 book ai didi

xcode - 无法杀死的虚假 NSRunningApplication 坐在我的 Dock 中?

转载 作者:行者123 更新时间:2023-12-03 17:11:18 24 4
gpt4 key购买 nike

我正在 OSX 10.9.4 上使用 Xcode 5.1.1 来调试 Cocoa + OpenGL 应用程序。到目前为止,我只在 Xcode 调试器下运行过我的应用程序。上周,我退出 Xcode,却发现我的应用程序的图标仍然位于 Dock 中。使用 Show In Finder 使我在 Xcode 的 DerivedData 中找到了一个调试可执行文件。我最终重新启动电源以摆脱它(更多内容),直到今天一切都很好。但现在我的 Dock 中有两个这样的图标。

问题:这些应用程序无法被杀死!强制退出不会执行任何操作。它们不会显示在使用“ps aux”或事件监视器的进程列表中。重新启动只会陷入试图摆脱它们的循环中。只有强制重新启动 Mac 才有效。

根据 NSWorkspace 的 runningApplication 方法,有与这些应用程序关联的 NSRunningApplication 实例。但进程 ID 与实际进程并不对应。控制台日志中没有任何相关内容。

还有人遇到过这种情况吗?对于让 NSWorkspace 摆脱虚假的 NSRunningApplication 实例有什么建议吗?

最佳答案

编辑:我发现了问题的根本原因!“拥有”伪僵尸 Dock NSRunningApplication 的应用程序在迭代 IORegistryEntryGetChildIterator() 的每个子项后未调用 IOObjectRelease()。啊,我花了几个月的时间才终于找到这个问题。基本上,我使用断点对应用程序“伪僵尸化”其他应用程序的 NSRunningApplication 的确切时刻进行二进制搜索。还是不明白为什么IORegistry迭代会劫持NSRunningApplication。

<小时/>

这为我解决了这个问题:

sudo killall launchservicesd; sudo killall Dock; sudo killall Finder;

或者在.bashrc中:

alias killdock="sudo killall launchservicesd; sudo killall Dock; sudo killall Finder;"

注意:如果您没有同时终止 Finder,则“在 Finder 中显示...”又名 [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:urls]; 将在我的应用程序中停止工作。

关于xcode - 无法杀死的虚假 NSRunningApplication 坐在我的 Dock 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com