一个iOS9 Bug:弄死iPhone很容易

苹果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,演示完毕,谢谢大家!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 09:07:49

一个iOS9 Bug:弄死iPhone很容易的相关文章

Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决

原文:Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决 最近一直在开发XX的uwp版本,也是边摸索边做,最近遇到几个比较奇怪的问题,记录于此. 1.项目可用部署到PC,但无法部署到手机,提示以下错误: 错误 : DEP0001 : 意外错误: Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9 为了方便开发,我将常用的类库引用好.默认的几个页面做

js动画--一个小bug处理下

对于上面的课程我们很好的处理了一个小bug,那么我们现在讲程序进行优化一下,前一节的程序中,我们处理处理的属性都是写死了的.为了我们能够很好的对某个属性进行操作的话.我们这样来设置. js文件 window.onload=function(){ var ls=document.getElementsByTagName("li"); for(var i=0,l=ls.length;i<l;i++){ ls[i].timer=null; ls[i].onmouseover=funct

XA中使用dblink发现的一个oracle bug

最近监控系统日志时发现出现一个新的错误信息,很奇怪,之前没有过.如下: ORA-24777:不允许使用不可移植的数据库链路. 跟踪程序进去发现是通过dblink查询某个远程库表,而且由于使用了XA分布式事务数据库连接.大家也许都知道XA有不少限制条件,之前也遇到过,都绕着走了.但是最近没有调整过程序也没有改变过dblink的配置,怎么回事呢?只能网上搜索,结果有人遇到过,说是oracle dblink改成shared就行了.个人觉得这个说法靠谱.于是现在测试系统上试了一下,果然有效. 可以为什么

拿到一个新 bug 怎样分析

1. 拿到一个新 bug, 首先要重现问题. 这对 code 问题是必须的, 对客户的 data 问题, 几乎也是必须的. 如果是 code 问题, 不重现就没办法修改代码, 改好了也无法验证是不是改对了. 客户的 data 出问题, 多数情况也是能够重现的. 毕竟客户是用我们的系统操作的, 只要拿到客户的历史数据, 对照着是可以自己做出同样的数据. 以前我遇到 data fix 的时候不喜欢重现, 都是凭感觉给出脚本. 但这样常常忽略一些重要的数据, 容易出错. 如果确定是 data fix,

【ASP.net控件】DropDownList数据绑定一个小bug

绑定数据出现这种情况,明明在第一项插入了一条数据,却始终在DropDownList中没有显示出来. 代码如下: if (!IsPostBack) { //绑定城市 DataTable dtCity = new HighSearch().GetCitySelect(); DropDownList1.DataSource = dtCity; DropDownList1.DataValueField = "citycode"; DropDownList1.DataTextField = &q

在一个高并发系统中 如果突然出现一个应用或者说一个服务突然变得很慢,应该怎么排查?

声明:该总结为网友朋友总结,本人是归纳成文,方便各网友学习交流. 这个是考线上排查问题能力,没有标准答案,作为开发,假设这种情景出现你怎么诊断问题? 首先:想知道,在实际情况下,怎么知道[一个应用或者说一个服务突然变得很慢]?调用访问的时候会发现的,对于业务流程比较熟悉很重要,先能够初步圈出,可能出现问题的地方,服务监控是必须的,做业务必须要知道自己服务的状态. 1.首先就是想看日志,后来想想看日志确实不太可行,并发量太大的情况下,查日志会很慢,(看日志,pstack strace gdb).

iOS开发之使用UICollectionView实现美团App的分类功能【偶现大众点评App的一个小bug】

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 例如以下图示[美团和大众点评]: 实现分类控件功能的思路: 1.实现collection v

关于一个小bug的修正

python初学者,非常喜欢虫师的文章. 练习时发现一个小bug,http://www.cnblogs.com/fnng/p/3782515.html 验证邮箱格式一题中,第三个x不允许有数字,但是测试发现[email protected] 仍显示验证邮箱地址正确 发现 re.match() 匹配的只是开头,故想到了分组的方法,代码如下: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 #Myemails.py 4 5 6 import r

iOS 9音频应用播放音频之第一个ios9音频实例2

iOS 9音频应用播放音频之第一个ios9音频实例2 ios9音频应用关联 iOS9音频应用中对于在主视图上添加的视图或控件,在使用它们时必须要与插座变量进行关联.ios9插座变量其实就是为主视图中的视图或者控件起的别名,类似于实例化的对象.将主ios9视图中的Play Button按钮控件与插座变量playButton进行关联.具体的操作步骤如下: (1)使用设置编辑器的三个视图方式的图标,如图2.14所示,将Xcode的界面调整为如图2.15所示的效果. 图2.14  编辑器的三个视图方式的