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