我是Xcode的新手,在使用Interface Builder时遇到IDE崩溃的问题。这是Xcode 4.5。
它的工作时间足够长,我可以在故事板上添加十几个按钮 - 但是当我尝试调整其中任何一个按钮时,它会崩溃并退出。如果我移动按钮,它会崩溃。如果我添加一个像标签这样的新对象,有时会崩溃,但并非总是如此。
如果我不尝试编辑故事板,项目将在模拟器上构建并运行,没有任何问题。
我已经粘贴了下面崩溃报告的相关部分。为了节省空间,我已经从“视图层次结构”部分向下删除了所有内容,但如果它有用,我可以添加它。所有崩溃报告都引用了同样的错误。
有趣的是,当我查看Console日志时,在每次崩溃之前都会有Interface Builder的另一个报告:
25/09/2012 10:46:35.661 Interface Builder Cocoa Touch Tool: CFPreferences:
user home directory at file://localhost/Users/me/Library/Application Support/
iPhone Simulator/User/ is unavailable. User domains will be volatile.
这是正确的 - 该目录不存在。我有iPhone模拟器/ 6.0,但没有别的。我以该路径中的用户身份登录。
基于Stack Overflow和其他地方的其他建议,我尝试清理构建然后删除整个iPhone模拟器目录并让模拟器重新创建它,但这没有任何区别。
作为一项实验,我刚创建了一个新项目,并将一些按钮和标签拖入故事板。这看起来很好。没有崩溃。
这是否表明我的其他项目中的某些内容已损坏?
非常欢迎任何建议。这不是一个重要的项目 - 我正在这个阶段学习我的方法 - 但是如果出现问题,那么我想在Xcode开始任何认真的工作之前解决它。
提前致谢。
詹姆斯
Process: Xcode [650]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 4.5 (1839)
Build Info: IDEApplication-1839000000000000~3
App Item ID: 497799835
App External ID: 10747437
Code Type: X86-64 (Native)
Parent Process: launchd [129]
Date/Time: 2012-09-25 10:46:43.202 +0100
OS Version: Mac OS X 10.7.5 (11G56)
Report Version: 9
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Application Specific Information:
ProductBuildVersion: 4G182
ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-1926/IBPlugin/Utilities/IBObjectMarshalling.m:651
Details: Failed to arbitrate IBNSLayoutConstraint, IBUIButton, IBUILabel, IBUIView, and IBUIViewController.
Interface Builder encountered an error communicating with the iOS Simulator. If you choose to file a crash report or radar for this issue, please check Console.app for crash reports for "Interface Builder Cocoa Touch Tool" and include their content in your crash report.
Exception name: IBAssertionFailure
Exception reason: ASSERTION FAILURE:
Reason: All views needing candidate constraints have already had constraints generated. This most likely indicates a bug involving layout of the following views:
Layout engine frame ({{20, 60}, {282, 57}}) of <UILabel: 0xb36f590; frame = (20 60; 281 57); text = '0'; clipsToBounds = YES; opaque = NO; autoresize = TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xb36f620>> does not match canvas frame ({{20, 60}, {281, 57}})
Layout engine frame ({{236, 328}, {66, 43}}) of <UIRoundedRectButton: 0xb384590; frame = (236 328; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb384660>> does not match canvas frame ({{236, 328}, {65, 43}})
Layout engine frame ({{236, 124}, {66, 43}}) of <UIRoundedRectButton: 0xb38ea10; frame = (236 124; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb38eae0>> does not match canvas frame ({{236, 124}, {65, 43}})
Layout engine frame ({{236, 175}, {66, 43}}) of <UIRoundedRectButton: 0xb390a30; frame = (236 175; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb36e8e0>> does not match canvas frame ({{236, 175}, {65, 43}})
Layout engine frame ({{236, 226}, {66, 43}}) of <UIRoundedRectButton: 0xb392a90; frame = (236 226; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb392b60>> does not match canvas frame ({{236, 226}, {65, 43}})
Layout engine frame ({{236, 277}, {66, 43}}) of <UIRoundedRectButton: 0xb394b70; frame = (236 277; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb394c40>> does not match canvas frame ({{236, 277}, {65, 43}})
答案 0 :(得分:15)
更新:进一步的实验揭示了使用Autolayout&#39;故事板的复选框。关闭它然后保存文件似乎已解决问题。我可以随意编辑,不会再发生崩溃。
答案 1 :(得分:2)
当xib文件采用不同的格式,但都在同一个项目中时,会发生这种情况。在我的例子中,一些xib文件兼容xcode5 dp,但其他文件适用于xcode 4.6
这里的对象是寻找xib文件中的差异
希望这有助于将来的人们!
答案 2 :(得分:1)
这个问题可能与现在两个不同大小的iPhone视网膜显示器(3.5“和4”)有关,以及它如何与视图的模式相互作用:缩放到以及可能自动调整子视图, - 默认情况下都会启用。
例如,在我的情况下,我有一个4“视网膜大小的MainView,紧凑的按钮视图。但模拟器设置为3.5视网膜显示。因为我的按钮视图大小只有43x43像素并且彼此相邻,这会导致按钮位置自动缩小,使它们重叠,当它们的位置调整为3.5“显示时(缩放到 空间) - 因为它们不能缩小尺寸。这种视图重叠似乎可能会导致自动布局系统出现问题。因此,我认为这是崩溃。
这也无疑是为什么在崩溃报告中有一些与模拟器通信的参考,尽管我们只在Interface Builder中工作,以前看起来并不直观。
答案 3 :(得分:1)
我也遇到了这个错误,对我来说问题是TableView还有一些约束。删除所有约束后,错误停止显示。