0
点赞
收藏
分享

微信扫一扫

iOS 关于第一响应者的惊天大崩溃!


惊天大崩溃

为什么说是​​惊天大崩溃​​?

因为一崩溃就直接到了​​main​​函数,而且没有一点崩溃信息,一点都没有。

自定义了一个输入框控件

在点击输入框时

直接来到这里:

iOS 关于第一响应者的惊天大崩溃!_iphone

调试

多次调试的过程中
发现崩溃闪退的过程中
并不是马上退出到主屏慕
而是界面卡了好几秒
才退出的

多次调试

  • iPhone 5s 10.3.2 : 正常运行
  • iPhone 6 11.2.2 : 点击输入框,​​直接崩溃​
  • iPhone 6P 11.3.1 : 点击输入框,​​直接崩溃​

继续调试

通过注释全部代码
一点一点放开的方式
不断调试
终于找到了​​​大Bug​

罪魁祸首

因为业务需要
需要知道当前是否在输入状态
那就想到是不是第一响应者
就定义了一个​​​BOOL​​​值 ​​isFirstResponder​​​ 结果是​​UIResponder​​已经定义了
那好吧
就改一下
用​​firstResponder​​ .h 文件

@property(nonatomic, assign) BOOL firstResponder;

.m文件

- (BOOL)firstResponder{
return _textView.isFirstResponder;
}

当调试进行到这里时,注释这了段代码

//- (BOOL)firstResponder{
// return _textView.isFirstResponder;
//}

居然​​再也​​没有崩溃了!

猜想

在 ​​iOS 10​​​ 测试时,运行正常
到了​​​iOS 11​​​ 测试时,就莫名崩溃
难道是在 ​​​iOS 11​​ 系统内部有这个方法:

- (BOOL)firstResponder{ 
//...
}

因此重写方法的关系
导致系统受不了!
直接崩溃了?!

总结

如果你像我一样
自定义的一个输入框
还恰好定义了一个​​​firstResponder​​​ 属性
又用了系统是 ​​​iOS 11​​​ 的手机来测试
那么
恭喜你
你找到了一个​​​惊天大Bug​​!

一行代码搞定视图圆角

​​https://github.com/xjh093/JHViewCorner​​


举报

相关推荐

0 条评论