##下面是异常出现后定位的代码,反复审查后没有发现问题
此处 QRCodePopupViewController 只是普通 ViewController ,主要是是想使用 addChildViewController 弹出卡片式窗口,之前在其他模块写过同样的代码没有任何问题,此处并没有任何影响 RunLoop 的 Mode 逻辑代码,虽然定位在这里但是真没发现问题。。。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
QRCodePopupViewController *popupVC = [[QRCodePopupViewController alloc] init];
[self addChildViewController:popupVC];
[self.view addSubview:popupVC.view];
[self presentViewController:popupVC animated:NO completion:^{
}];
}
##抛出的异常日志
invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific
1
SeanChense 2016-12-19 18:36:11 +08:00 via iPhone
代码抠出来放一个小工程看看
|
2
anerevol 2016-12-19 18:40:28 +08:00
能把日志异常贴全一点么
|
3
anerevol 2016-12-19 18:44:12 +08:00
参考这样的 https://madordie.github.io/2016/10/12/debug-note/
invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific 这句应该和 crash 本身没关系 |
4
Dean OP @anerevol 其实日志有用的已经贴出了 invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.
libc++abi.dylib: terminate_handler unexpectedly threw an exception |
5
bzmario 2016-12-19 21:24:49 +08:00
已经添加为子视图、子控制器了,还 present 做什么
|
6
mornlight 2016-12-19 21:50:09 +08:00
用 storyboard 了吗,检测一遍关联有没有问题
|
8
Dean OP @SeanChense demo 竟然正常 地址 https://github.com/y2kbug/RunLoopCrash
|
9
ahmiao 2016-12-20 08:32:33 +08:00
present 之前不需要 addChildViewController 跟 addSubview 吧
|
11
hekunhotmail 2016-12-20 10:50:50 +08:00
[self addChildViewController:popupVC];
[self.view addSubview:popupVC.view]; [self presentViewController:popupVC animated:NO completion:^{ }]; 你这里调用了系统的 presentViewController 还是重写了? 如果是调用系统的 presentViewController 你知道 presentViewController 里面都干了什么? |
12
crashX 2016-12-20 12:45:26 +08:00
你的 xib 或者 storyboard 关联的 IBOutlet 有问题,检查一下 xib 是否有 warning 。 xib 是大坑,强烈不建议用。
|
13
Dean OP ### 重新更新
> 由于之前写的代码没有备注,拷贝丢失建立 NavigationController 部分, prsentViewController 部分一直怪怪的,思维短路没发现😂 ```objc - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO]; QRCodePopupViewController *popupVC = [[QRCodePopupViewController alloc] init]; [self addChildViewController:popupVC]; [self.view addSubview:popupVC.view]; UINavigationController *popupVN = [[UINavigation controller] initWithRootController:popupVC]; [self presentViewController:popupVN animated:NO completion:^{ }]; } ``` |
14
kobe1941 2016-12-20 19:18:03 +08:00
这两行完全多余啊:
[self addChildViewController:popupVC]; [self.view addSubview:popupVC.view]; |
15
yuzhouwww 2017-11-06 16:30:27 +08:00
我这边是使用了无效的 IBOutlet 指针
|