【问题标题】:Xcode Interface Builder crashes when I edit storyboard编辑情节提要时 Xcode Interface Builder 崩溃
【发布时间】:2012-09-16 20:21:41
【问题描述】:

我是 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}})

【问题讨论】:

    标签: xcode crash interface-builder


    【解决方案1】:

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

    【讨论】:

    • 我也遇到了同样的问题,而且似乎是同样的崩溃,但我没有使用情节提要。您在情节提要的哪里检查了“使用自动布局”?或者,这个复选框是在其他地方吗?谢谢
    • 什么时候崩溃?您的应用程序是否有带有某种视图的(空白)故事板?该复选框位于检查器中——Interface Builder 的右侧窗格中。将其 关闭 解决了我的问题。如果找不到,请告诉我,我会添加屏幕抓取。祝你好运。
    • 在单视图应用中编辑 .xib 时崩溃;我只需要按照您的建议取消选中 xib 的“使用自动布局”,谢谢
    • 如果每次选择故事板时,xcode 都会挂起并且我必须强制退出,我该如何取消选中该框。
    • 我遇到了类似的问题,但奇怪的是,XIB 是 而不是 ,就像我所有其他 XIB 一样...只是从另一个 XIB 复制粘贴文档和属性崩溃消失了......可能会对某人有所帮助:)出于索引目的:我在控制台中的错误看起来像这样“Interface Builder Cocoa Touch Tool[XXXX]: assertion failed: XX124X: libxpc.dylib”
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢,这似乎解决了我的问题。
    【解决方案3】:

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

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

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

    【讨论】:

    • 同意。不过,特殊之处在于,虽然关闭自动布局可以修复崩溃,但之后再次打开它不会让问题再次出现。奇怪的。你用你的试过吗?我让它一直打开,没有其他问题 - 这让我觉得有些东西已经损坏了。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 2022-11-28
      • 2012-03-27
      • 2018-06-15
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多