libc++abi.dylib:以 NSException (lldb) 类型的未捕获异常终止 TabBarController->TableViews->ViewControllers

Posted

技术标签:

【中文标题】libc++abi.dylib:以 NSException (lldb) 类型的未捕获异常终止 TabBarController->TableViews->ViewControllers【英文标题】:libc++abi.dylib: terminating with uncaught exception of type NSException (lldb) TabBarController->TableViews->ViewControllers 【发布时间】:2015-03-06 20:12:27 【问题描述】:

我正在尝试使我的应用程序正常工作,但在从 UITabBarController 推入 UIViewController 后,它总是崩溃(仅当我为 ViewController 添加任何类时)

这是崩溃日志:

2015-03-06 21:59:22.198 devDes4[31560:1990488] 无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档) ( "<NSLayoutConstraint:0x7fa513d6cc00 V:[UIImageView:0x7fa513d6f090(64)]>", "<NSLayoutConstraint:0x7fa513d70310 V:[UIImageView:0x7fa513d6f090]-(8)-| (Names: '|':UITableViewCellContentView:0x7fa513d6eb80 )>", "<NSLayoutConstraint:0x7fa513d703b0 V:|-(8)-[UIImageView:0x7fa513d6f090] (Names: '|':UITableViewCellContentView:0x7fa513d6eb80 )>", "<NSLayoutConstraint:0x7fa513c1f180 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fa513d6eb80(79.5)]>" )

将尝试通过打破约束来恢复

在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点,以便在调试器中捕获它。 中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。 2015-03-06 21:59:24.298 devDes4[31560:1990488] 无法在 (NSLayoutConstraint) 上设置 (layer.masksToBounds) 用户定义的检查属性:[valueForUndefinedKey:]:此类不符合键值编码层。 2015-03-06 21:59:24.298 devDes4 [31560:1990488] 无法在 (NSLayoutConstraint) 上设置 (layer.cornerRadius) 用户定义的检查属性:[valueForUndefinedKey:]:此类不符合键值编码层。 2015-03-06 21:59:26.694 devDes4 [31560:1990488] 无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档) ( "<NSLayoutConstraint:0x7fa51606bf10 V:[UIImageView:0x7fa51606d8e0(64)]>", "<NSLayoutConstraint:0x7fa51606e430 V:[UIImageView:0x7fa51606d8e0]-(8)-| (Names: '|':UITableViewCellContentView:0x7fa51606d610 )>", "<NSLayoutConstraint:0x7fa51606e4d0 V:|-(8)-[UIImageView:0x7fa51606d8e0] (Names: '|':UITableViewCellContentView:0x7fa51606d610 )>", "<NSLayoutConstraint:0x7fa516259c60 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fa51606d610(79.5)]>" )

将尝试通过打破约束来恢复

在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点,以便在调试器中捕获它。 中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。 2015-03-06 21:59:37.718 devDes4[31560:1990488] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“-[UITableViewController loadView] 加载了“pCv-8q-z3l-view-69w -Xq-gJ3" nib 但没有得到 UITableView。 * 首先抛出调用栈: ( 0 CoreFoundation 0x0000000108639f35 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x00000001082d2bb7 objc_exception_throw + 45 2 CoreFoundation 0x0000000108639e6d +[NSException raise:format:] + 205 3 UIKit 0x0000000108d08415 -[UITableViewController loadView] + 249 4 UIKit 0x0000000108b4b7f9 -[UIViewController loadViewIfRequired] + 75 5 UIKit 0x0000000108b4bc8e -[UIViewController view] + 27 6 UIKit 0x0000000108b6f507 -[UINavigationController _startCustomTransition:] + 633 7 UIKit 0x0000000108b7b3fe -[UINavigationController _startDeferredTransitionIfNeeded:] + 386 8 UIKit 0x0000000108b7bf47 -[UINavigationController __viewWillLayoutSubviews] + 43 9 UIKit 0x0000000108cc1509 -[UILayoutContainerView layoutSubviews] + 202 10 UIKit 0x0000000108a9f973 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521 11 QuartzCore 0x000000010c314de8 -[CALayer layoutSublayers] + 150 12 QuartzCore 0x000000010c309a0e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380 13 QuartzCore 0x000000010c30987e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 14 QuartzCore 0x000000010c27763e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242 15 QuartzCore 0x000000010c27874a _ZN2CA11Transaction6commitEv + 390 16 QuartzCore 0x000000010c278db5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89 17 CoreFoundation 0x000000010856edc7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 18 CoreFoundation 0x000000010856ed20 __CFRunLoopDoObservers + 368 19 CoreFoundation 0x0000000108564b53 __CFRunLoopRun + 1123 20 CoreFoundation 0x0000000108564486 CFRunLoopRunSpecific + 470 21 GraphicsServices 0x000000010bc089f0 GSEventRunModal + 161 22 UIKit 0x0000000108a26420 UIApplicationMain + 1282 23 devDes4 0x0000000107d9f103 main + 115 24 libdyld.dylib 0x000000010abc9145 start + 1 25 ??? 0x0000000000000001 0x0 + 1 )

【问题讨论】:

【参考方案1】:

无需粘贴所有崩溃日志。关键是"原因:'-[UITableViewController loadView] 加载了"pCv-8q-z3l-view-69w-Xq-gJ3" nib 但没有得到UITableView。'"也许你使用了错误的控制器类。如果您使用 UIViewController,则无需执行任何操作。 但是,如果你使用 UITableViewController,你必须实现 dataSoure 方法:

1.- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

2.- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

3.- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

【讨论】:

当我试图从 UITableController 传递到 UIViewController (Push) 并且只有当我为 UIViewController 设置类时,它才会崩溃 TableViewController 有一个类,有这些方法,但是当我为 ViewController 设置任何类时,它在推送时崩溃 或者你有自定义类吗?如果你自定义控制器,你应该设置你自己的类名 根据崩溃原因,只是因为你使用了 UITableViewController ,但你没有设置它的 tableView (或正确实现 dataSoure 方法)。最好贴一些相关代码!

以上是关于libc++abi.dylib:以 NSException (lldb) 类型的未捕获异常终止 TabBarController->TableViews->ViewControllers的主要内容,如果未能解决你的问题,请参考以下文章

Swift 2 到 3 迁移错误(libc++abi.dylib:以 NSException 类型的未捕获异常终止)

UITableViewDataSource 导致 libc++abi.dylib:以 NSException 类型的未捕获异常终止

libc++abi.dylib:以 NSException (lldb) 类型的未捕获异常终止 TabBarController->TableViews->ViewControllers

(Swift 3) 父子上下文崩溃核心数据 (libc++abi.dylib: 以 NSException (Recorded Frame) 类型的未捕获异常终止)

libc++abi.dylib: terminate_handler unexpectedly threw an exception错误小结

libc++abi.dylib: terminate_handler 意外抛出异常 - 0 堆栈跟踪 iOS7 / iOS 8