Xcode 我被告席上的不可辩驳的、伪造的NSRunningApplication?
我正在OSX 10.9.4上使用Xcode 5.1.1调试Cocoa+OpenGL应用程序。到目前为止,我只在Xcode调试器下运行过我的应用程序。上周我退出Xcode,却发现我的应用程序的图标仍在基座上。使用Show-In-Finder可以在Xcode的DerivedData中找到一个调试可执行文件。我最终重新启动了电源以摆脱它(更多信息),直到今天一切都很好。但我现在有两个这样的图标坐在我的码头上 问题是:这些应用程序不能被杀死!强制退出没有任何作用。它们不会使用“ps aux”或活动监视器显示在流程列表中。重启只是陷入了试图摆脱它们的循环中。只有强制电源循环Mac才能工作 根据NSWorkspace的runningApplication方法,存在与这些应用程序关联的NSRunningApplication实例。但是进程id与实际进程不对应。控制台日志中没有相关内容 还有人遇到过这种情况吗?关于让NSWorkspace摆脱伪造的NSRunningApplication实例的任何建议?编辑: 我发现了问题的根本原因! “拥有”伪僵尸Dock NSRunningApplication的应用程序在迭代Xcode 我被告席上的不可辩驳的、伪造的NSRunningApplication?,xcode,cocoa,nsworkspace,nsrunningapplication,Xcode,Cocoa,Nsworkspace,Nsrunningapplication,我正在OSX 10.9.4上使用Xcode 5.1.1调试Cocoa+OpenGL应用程序。到目前为止,我只在Xcode调试器下运行过我的应用程序。上周我退出Xcode,却发现我的应用程序的图标仍在基座上。使用Show-In-Finder可以在Xcode的DerivedData中找到一个调试可执行文件。我最终重新启动了电源以摆脱它(更多信息),直到今天一切都很好。但我现在有两个这样的图标坐在我的码头上 问题是:这些应用程序不能被杀死!强制退出没有任何作用。它们不会使用“ps aux”或活动监视器
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]ActivateFileViewer选择URL:URL]
停止在我的应用程序中工作。如果你killall Dock
;幻影应用程序会留在那里吗?是的,当码头重新启动时,它们会回来。