XCode 4.2.1每次打开一个新窗口时都会崩溃

时间:2012-02-07 15:54:17

标签: xcode

我有Lion的Xcode 4.2.1,每当我在新窗口中打开任何东西时它都会崩溃(例如 - 双击任何文件)。在这种情况下,类型无关紧要。它将崩溃.h,.m,.xib,.plist等....我重新安装Xcode无济于事。直到最近才发生这种情况 - 但一旦发生一次 - 它就会不断发生。

它似乎与当前打开的项目无关 - 因为我关闭了所有项目并打开了一个新项目 - 我仍然看到了问题。

更新:请参阅下面的答案,了解我最终如何解决此问题。

以下是我得到的例外情况:

UNCAUGHT EXCEPTION (NSUnknownKeyException): [<__NSCFConstantString 0x7fff7e9e38e0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key file://localhost/Projects/SomeProject/SomeFile.plist.
UserInfo: {
    NSTargetObjectUserInfoKey = "";
    NSUnknownUserInfoKey = "file://localhost/Projects/SomeProject/SomeFile.plist";
}
Hints: None
Backtrace:
  0  0x00007fff979c426a __exceptionPreprocess (in CoreFoundation)
  1  0x00007fff983acd5e objc_exception_throw (in libobjc.A.dylib)
  2  0x00007fff97a4e4c9 -[NSException raise] (in CoreFoundation)
  3  0x00007fff8f9a8783 -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] (in Foundation)
  4  0x00007fff8f8df462 _NSGetUsingKeyValueGetter (in Foundation)
  5  0x00007fff8f8df3e9 -[NSObject(NSKeyValueCoding) valueForKey:] (in Foundation)
  6  0x00007fff8f8df101 -[NSArray(NSKeyValueCoding) valueForKey:] (in Foundation)
  7  0x000000010a2ced12 -[IDEWorkspaceDocument _defaultPrimaryEditorFrameSizeForDocumentURL:] (in IDEKit)
  8  0x000000010a307d62 -[IDEWorkspaceWindowController _changeSizeForSimpleEditorWindowLayoutWithEditorDocumentURLOrNil:workspaceTabController:] (in IDEKit)
  9  0x000000010a30827d -[IDEWorkspaceWindowController _revertForNewWindowWithTabStateContext:documentURL:simpleEditorWindowLayout:completionBlock:] (in IDEKit)
 10  0x000000010a2cf795 -[IDEWorkspaceDocument _makeTabbedWindowControllerWithStateFromTabController:documentURL:simpleEditorWindowLayout:frontmost:completionBlock:] (in IDEKit)
 11  0x000000010a2f4188 +[IDEEditorCoordinator _doOpenIn_NewWindow_withWorkspaceTabController:documentURL:usingBlock:] (in IDEKit)
 12  0x000000010a2f4c41 +[IDEEditorCoordinator _doOpenIn_SeparateWindow_withWorkspaceTabController:documentURL:usingBlock:] (in IDEKit)
 13  0x000000010a2599ba +[IDEEditorCoordinator _doOpenWithWorkspaceTabController:editorContext:target:allowFallback:documentURL:usingBlock:] (in IDEKit)
 14  0x000000010a2f4dd5 +[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:] (in IDEKit)
 15  0x000000010a259353 -[_IDEOpenRequest _runIfNecessary] (in IDEKit)
 16  0x000000010a258d3a -[_IDEOpenRequest _enqueueForEventBehavior:] (in IDEKit)
 17  0x000000010a258855 +[IDEEditorCoordinator _openRequestForEditorOpenSpecifier:workspaceTabController:editorContext:eventBehavior:takeFocus:] (in IDEKit)
 18  0x000000010a2587ac __99+[IDEEditorCoordinator _openEditorOpenSpecifier:forWorkspaceTabController:eventBehavior:takeFocus:]_block_invoke_0 (in IDEKit)
 19  0x000000010a258740 _performBlockInsideReentrantGuard (in IDEKit)
 20  0x000000010a2586b5 +[IDEEditorCoordinator _openEditorOpenSpecifier:forWorkspaceTabController:eventBehavior:takeFocus:] (in IDEKit)
 21  0x000000010a25839d +[IDEEditorCoordinator openEditorOpenSpecifier:forWorkspaceTabController:eventType:] (in IDEKit)
 22  0x000000010a2579a1 -[IDEOutlineBasedNavigator _openNavigableItem:eventType:] (in IDEKit)
 23  0x00007fff979b3a1d -[NSObject performSelector:withObject:] (in CoreFoundation)
 24  0x00007fff8df32710 -[NSApplication sendAction:to:from:] (in AppKit)
 25  0x0000000109b1fd10 -[DVTApplication sendAction:to:from:] (in DVTKit)
 26  0x000000010a207cf4 -[IDEApplication sendAction:to:from:] (in IDEKit)
 27  0x00007fff8df32642 -[NSControl sendAction:to:] (in AppKit)
 28  0x000000010a25776f -[IDENavigatorOutlineView sendAction:to:] (in IDEKit)
 29  0x00007fff8df98f48 -[NSTableView _sendAction:to:row:column:] (in AppKit)
 30  0x00007fff8df95d0f -[NSTableView mouseDown:] (in AppKit)
 31  0x00007fff8e313592 -[NSOutlineView mouseDown:] (in AppKit)
 32  0x000000010a256274 -[IDENavigatorOutlineView mouseDown:] (in IDEKit)
 33  0x00007fff8defb0e0 -[NSWindow sendEvent:] (in AppKit)
 34  0x00007fff8de9368f -[NSApplication sendEvent:] (in AppKit)
 35  0x000000010a207a11 -[IDEApplication sendEvent:] (in IDEKit)
 36  0x00007fff8de29682 -[NSApplication run] (in AppKit)
 37  0x00007fff8e0a880c NSApplicationMain (in AppKit)
 38  0x0000000109901eec (in Xcode)
 39  0x0000000000000002

6 个答案:

答案 0 :(得分:2)

堆栈跟踪显示NSArray对象,该对象使用密钥valueForKey:发送"file://localhost/Projects/SomeProject/SomeFile.plist"消息。这只是将valueForKey:发送到数组中的每个对象。其中一个对象是空的NSString,它只有NSObject的默认valueForKey:实现,它自然不知道上述关键字的任何内容(@"file://...")所以它会引发异常。

valueForKey:发送到NSArray的方法是 IDEKit中的-[IDEWorkspaceDocument _defaultPrimaryEditorFrameSizeForDocumentURL:]

所以我使用hopper disassembler在IDEKit(/Developer/Library/PrivateFrameworks/IDEKit.framework/Versions/A/IDEKit)中反汇编了这个方法。

我得出的结论是,此方法从密钥[NSUserDefaults standardUserDefault]中读取Xcode的@"IDEDefaultPrimaryEditorFrameSizeForPaths"中的NSArray。然后使用您文件的路径向此数组发送valueForKey:,希望找到文件编辑器的帧大小,而不是导致错误。问题可能是这个NSUserDefaults条目以某种方式变得无效(它是NSArray具有意外内容,或者它甚至不应该是NSArray。)

所以,正如@RAZ所建议的那样,清除Xcode的首选项有很大的帮助:-) (不确定它会有所帮助,因为Xcode可以在运行时注册用户默认值 - 但它可能会这样做。)

另一种(不太有趣但实用的:-))解决方案是将Xcode重新安装到默认位置以外的位置。安装时,您可以选择自定义安装文件夹。这将在原始文件旁边并排安装新的Xcode副本。

答案 1 :(得分:1)

重置您的模拟器,它可以在升级后缓存坏数据。

我也看到人们通过清除应用程序首选来解决行为不端的应用

http://hints.macworld.com/article.php?story=20001229001847541

首先备份,你说你重新安装但有些安装程序没有重置prefs。

答案 2 :(得分:0)

我自己在Xcode中遇到过类似的问题,而且我在浏览器周围看到了几个与Xcode本身有关的错误的人。它可能有助于修复磁盘权限,但我无法确认它。但值得一试

答案 3 :(得分:0)

只是在黑暗中拍摄,是否会在新的用户帐户中发生?

答案 4 :(得分:0)

对我来说,答案最终是多种因素的结合。出于某种原因,Xcode 4.2.x正在解决这个问题。我最终升级到Xcode 4.3 - 但问题仍然存在。清除Xcode的首选项后(更新后)问题就消失了。我用Xcode 4.2.x尝试了很多次 - 但即使清除首选项也无法解决问题。

我很高兴解决这个问题 - 但我不知道如何在不升级到Xcode 4.3的情况下解决。

答案 5 :(得分:0)

以下是我如何修理我的:

  • Go - &gt;首页 - &gt;自动保存信息 - &gt;所有与xcode相关的文件都发送给 垃圾
  • Finder - &gt;空垃圾
  • Apple - &gt;重新启动