一个iOS9 Bug 弄死iPhone很容易

本文详细解析了在iOS9.1设备上一个导致应用程序崩溃的键盘Bug,通过一个简单的示例展示了如何重现此问题,并提供了修复建议。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               


苹果iOS9推出也有一段时间了,本来以为应该很稳定吧,但事实却不是这样。一日将iOS 8上运行得很良好的App在一台iOS 9.1设备上调试,却发现了很奇葩的问题:不能释放键盘。

跟踪调试,发现只要代码中一运行到resignFirstResponder(或者是endEditing)方法调用的地方,程序就崩溃。出现神一般的BAD EXEC错误。

 

将这句代码注释,一切OK,但是你就无法收起软键盘了。

 

在网上搜罗答案无数,只有一个答案是靠谱的:

 

http://www.dahuatu.com/1LypEbbMmn.html

 

接下来,让我们来演示一下这个Bug,你就会明白让一个在iOS 8上运行正常的App崩溃是如此的容易。

 

新建工程。在View Controller上拖一个TextField和Button。为Button创建一个IBAction连接:

- (IBAction)freekb:(id)sender {

   [self.view endEditing:YES];

}

其它代码什么都不要写。运行程序(在iOS 9.1模拟器或设备上),点击TextField,键盘弹出,点击Button,键盘收起。一切OK,没有任何问题。

 

现在我们来看怎么弄死它。实现一个Category,随便你叫它什么(比如test):

 

@implementation UIViewController(test)

 

- (void)dealloc{

}

 

@end

 

如你所见,只定义了一个空的dealloc方法,方法中什么代码也不用写。

运行程序(在iOS 9.1模拟器或设备上),点击TextField,键盘弹出,点击Button,键盘收起。程序崩溃!删除dealloc方法,再次运行,一切正常。

 

Ok,演示完毕,谢谢大家!

           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值