我有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
答案 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)
以下是我如何修理我的: