Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 我被告席上的不可辩驳的、伪造的NSRunningApplication?_Xcode_Cocoa_Nsworkspace_Nsrunningapplication - Fatal编程技术网

Xcode 我被告席上的不可辩驳的、伪造的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”或活动监视器

我正在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的应用程序在迭代
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
;幻影应用程序会留在那里吗?是的,当码头重新启动时,它们会回来。