13

我是 Xcode 的新手,在使用 Interface Builder 时遇到了 IDE 崩溃的问题。这是 Xcode 4.5。

它可以正常工作足够长的时间,我可以在情节提要中添加十几个按钮 - 但是当我尝试调整其中任何一个按钮时,它会崩溃并退出。如果我移动一个按钮,它就会崩溃。如果我添加一个像标签这样的新对象,它有时会崩溃,但并非总是如此。

如果我不尝试编辑情节提要,项目将在模拟器上构建并运行,没有任何问题。

我在下面粘贴了看起来像是崩溃报告相关部分的内容。为了节省空间,我从“视图层次结构”部分向下删除了所有内容,但如果有用,我可以添加它。所有的崩溃报告都指向同一个错误。

有趣的是,当我查看控制台日志时,在每次崩溃之前,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 Simulator/6.0,但没有别的。我以该路径中的用户身份登录。

根据 Stack Overflow 和其他地方的其他建议,我尝试清理构建,然后删除整个 iPhone Simulator 目录并让模拟器重新创建它,但这没有区别。

作为一个实验,我刚刚创建了一个新项目并将一些按钮和标签拖到情节提要中。这似乎很好。没有崩溃。

这是否表明我的其他项目中的某些内容已损坏?

任何建议都会非常受欢迎。这不是一个重要的项目——我在这个阶段正在学习我的方法——但是如果有什么问题导致了问题,那么我想在我开始在 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}})
4

4 回答 4

15

更新:进一步的实验揭示了情节提要的“使用自动布局”复选框。关闭它然后保存文件似乎已经解决了这个问题。我可以随意编辑,不再崩溃。

于 2012-10-01T19:15:03.790 回答
2

当 xib 文件格式不同,但都在同一个项目中时,就会出现这种情况。就我而言,一些 xib 文件与 xcode5 dp 兼容,但其他文件与 xcode 4.6 兼容

这里的目的是寻找xib文件的差异

希望这对未来的人们有所帮助!

于 2013-06-26T03:02:11.507 回答
1

这个问题可能与现在两个不同尺寸的 iPhone 视网膜显示器(3.5" 和 4")有关,以及它如何与视图的Mode:Scale To FillAutosize Subviews 交互,这两者都默认启用.

例如,在我的情况下,我有一个 4" 视网膜大小的 MainView 和紧凑的按钮视图。但是模拟器设置为 3.5 视网膜显示。因为我的按钮视图大小只有 43x43px 并且彼此相邻,这会导致当它们的位置被调整为 3.5 英寸显示器(缩放以填充的空间)时,按钮位置以它们重叠的方式自动缩小 - 因为它们无法缩小尺寸。这种视图的重叠似乎可能会导致自动布局系统出现问题。因此,我认为是崩溃。

毫无疑问,这也是为什么在崩溃报告中提到与模拟器通信的原因,即使我们只在 Interface Builder 中工作,这在以前似乎并不直观。

于 2012-10-09T00:00:08.750 回答
1

我也遇到了这个错误,对我来说问题是一个 TableView 有一些约束。删除所有约束后,错误停止出现。

于 2016-02-02T13:03:02.693 回答