zoukankan      html  css  js  c++  java
  • iOS9 bug: 极容易崩溃的bug

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

  • 相关阅读:
    在服务器上搭建java环境
    往Android studio中导入类库文件
    Android异步任务AsyncTask
    搭建java环境
    使用安卓实现一个二维码扫描功能(基于Android Studio)
    Android中的runOnUiThread
    网络基础
    Android使用URL访问网络资源
    21天学通VC++
    cometd(转)
  • 原文地址:https://www.cnblogs.com/BinZone/p/4995505.html
Copyright © 2011-2022 走看看