XCode 6项目在ios 7.1上segue后崩溃

Posted

技术标签:

【中文标题】XCode 6项目在ios 7.1上segue后崩溃【英文标题】:XCode 6 project crashing after segue on ios 7.1 【发布时间】:2014-11-15 00:44:23 【问题描述】:

我的项目在 ios 8 模拟器和我的设备(iPhone 5S、iOS 8)上运行良好,但是当我在 7.1 模拟器上运行时,每次执行 segue 时都会崩溃...

我正在粘贴部分日志。

如果我停用自动布局,它会毫无问题地运行。我试图杀死我所关注的视图控制器上的约束,但没有区别......

2014-11-15 02:39:14.574 My Project[26240:607] Objective: objective 0x79163360: <251:84> + <750:-1.42636e-07>*0x78f7c920.negErrorid: 215 + <999:2>*0x78fdf120.negErrorid: 1389 + <999:2>*0x78fdf230.negErrorid: 1392 + <999:1>*_UILayoutGuide:0x78fdf0b0.Widthid: 1390 + <999:1>*_UILayoutGuide:0x78fdf190.Widthid: 1393
2014-11-15 02:39:14.578 My Project[26240:607] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<NSISEngine: 0x79186230> Rows:
    0x78fdf120.posErrorMarkerid: 1388 == 0 + 1*0x78fdf120.negErrorid: 1389 + 1*_UILayoutGuide:0x78fdf0b0.Widthid: 1390
    0x78fdf230.posErrorMarkerid: 1391 == 0 + 1*0x78fdf230.negErrorid: 1392 + 1*_UILayoutGuide:0x78fdf190.Widthid: 1393
    UILayoutContainerView:0x78f5e630.Heightid: 276 == 960 + 2*0x78f7a4f0.markerid: 285 + 1*0x78f81890.markerid: 293
    UILayoutContainerView:0x78f5e630.Widthid: 273 == 640 + 2*0x78f7a490.markerid: 282 + 1*0x78f81860.markerid: 290
    UILayoutContainerView:0x78f5e630.minXid: 279 == 0 + 2*0x78f6e210.markerid: 278 + 

.... blah blah blah

  Integralization Adjustments:
(none)

  Statistics:
    26 rows. Variable counts:
          1 ->   9
          2 ->  12
          3 ->   4
          5 ->   1
: internal error.  Cannot find an outgoing row head for incoming head 0x78f7c920.negErrorid: 215, which should never happen.'
*** First throw call stack:
(
    0   CoreFoundation                      0x002d91e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x01a978e5 objc_exception_throw + 44
    2   CoreFoundation                      0x002d8fbb +[NSException raise:format:] + 139
    3   Foundation                          0x007a6079 -[NSISEngine minimizeConstantInObjectiveRowWithHead:] + 256
    4   Foundation                          0x007a5ee3 -[NSISEngine optimize] + 183
    5   Foundation                          0x0091a6d8 -[NSISEngine withBehaviors:performModifications:] + 183
    6   Foundation                          0x007aa3c5 -[NSISEngine withAutomaticOptimizationDisabled:] + 48
    7   UIKit                               0x00bdb830 -[UIView(Hierarchy) _postMovedFromSuperview:] + 313
    8   UIKit                               0x00bd9b0a __UIViewWasRemovedFromSuperview + 226
    9   UIKit                               0x00bd970a -[UIView(Hierarchy) removeFromSuperview] + 264
    10  UIKit                               0x00cbcb3b -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:] + 339
    11  UIKit                               0x00cb4963 __49-[UINavigationController _startCustomTransition:]_block_invoke + 206
    12  UIKit                               0x012c4810 -[_UIViewControllerTransitionContext completeTransition:] + 99
    13  UIKit                               0x00b6ec94 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke103 + 680
    14  UIKit                               0x00be1435 -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 306
    15  UIKit                               0x00bca6dc -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 267
    16  UIKit                               0x00bca9c8 -[UIViewAnimationState animationDidStop:finished:] + 80
    17  QuartzCore                          0x04a8abb4 _ZN2CA5Layer23run_animation_callbacksEPv + 304
    18  libdispatch.dylib                   0x0215d4d0 _dispatch_client_callout + 14
    19  libdispatch.dylib                   0x0214b726 _dispatch_main_queue_callback_4CF + 340
    20  CoreFoundation                      0x0033e43e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
    21  CoreFoundation                      0x0027f5cb __CFRunLoopRun + 1963
    22  CoreFoundation                      0x0027e9d3 CFRunLoopRunSpecific + 467
    23  CoreFoundation                      0x0027e7eb CFRunLoopRunInMode + 123
    24  GraphicsServices                    0x03cf45ee GSEventRunModal + 192
    25  GraphicsServices                    0x03cf442b GSEventRun + 104
    26  UIKit                               0x00b7af9b UIApplicationMain + 1225
    27  My Project                         0x0014744e top_level_code + 78
    28  My Project                         0x0014748b main + 43
    29  libdyld.dylib                       0x023a16d9 start + 1
    30  ???                                 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

【问题讨论】:

【参考方案1】:

我遇到了类似的崩溃。应用程序在 iOS 8 中运行正常,每次在 iOS 7 中执行特定的 segue 时都会崩溃。除了崩溃之外,我的 View Controller 视图的布局在 iOS 7 中运行时不正确,在 iOS 8 中正常。

您是否使用比例高度/宽度约束?我在场景 A 中使用了其中的一些,并且在切换到场景 B 后应用程序总是崩溃。我禁用了场景 A 中的所有比例高度/宽度约束,并且应用程序不再崩溃,尽管布局显然是错误的。

对我来说这似乎是一个错误。

【讨论】:

【参考方案2】:

我刚刚遇到了类似的问题。花了几天时间才弄清楚是什么触发了它。

我的应用在 iPhone 5s(在模拟器中)的 iOS 7 中崩溃,但在 iOS 8 或其他设备上没有。当我的控制器被弹出时,我遇到了同样的错误(“无法为传入的头找到传出的行头......”)......以及当控制器在 UIPageViewController 中被滚动离开时。

在这两种情况下,问题都是由于我使用 UIView.insertSubview:belowSubview: 和 UIView.bringSubviewToFront: 等 API 将全屏视图堆叠在一起这一事实触发的。解决方案/解决方法是更改​​我们的代码以动态添加/删除我们的视图,而不是堆叠它们并打乱它们的顺序。

希望这可以帮助遇到同样问题的其他人。

【讨论】:

【参考方案3】:

这是一个布局问题。尝试删除一些可疑的子视图并运行。我用这种方法解决了这个问题。顺便说一句,我认为这是iOS7中的一个错误,在iOS 8中已解决。

【讨论】:

【参考方案4】:

这个问题已经晚了,但我认为我的回答可能会对某人有所帮助。

这个crash也发生在我身上,情况和输出差不多。

我很确定这是一个错误。要解决这个问题,请按住 control 并单击情节提要并选择 Show File Inspector。在检查器面板中,将故事板的构建版本设置为 iOS 8.0 及更高版本。现在一切正常。

【讨论】:

【参考方案5】:

绝对是 iOS7 IB 错误。我遇到了这个问题,通过首先确定有问题的约束然后将其从 IB 中删除来解决它。然后只需在 viewDidLoad 中使用NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant: 以编程方式实例化约束

【讨论】:

【参考方案6】:

我遇到了似乎相似的问题。我将 push segue 放在我的视图中以转换到另一个视图。还有什么。每次模拟器崩溃。就我而言,原因很简单。 要使用 push segue,必须从 Navigation Controller 管理 ViewController。如果不是,它会立即崩溃,在控制台中打印类似“无法在情节提要中找到 ViewController”的内容。 出去的方法有两种: - 在导航控制器中嵌入视图(有它的工具:菜单编辑器->嵌入->导航控制器 - 使用 Modal Segue insted。

我希望这个答案可以帮助解决一些“奇怪”的崩溃。

【讨论】:

以上是关于XCode 6项目在ios 7.1上segue后崩溃的主要内容,如果未能解决你的问题,请参考以下文章

我的空 swift 应用程序在部署目标 7.1 的 xcode6-beta 上崩溃

IOS xcode 6 - Segues 不起作用

在 removeFromParent 上 Sprite Kit iOS 7.1 崩溃

Xcode 6 Segue 与 UINavigationItem

如何在 Xcode 6.0 Beta 中运行 iOS 7.1 模拟器?

iOS 模拟器 Xcode 7.1 和 Xcode 7.2 的不同列表