zoukankan      html  css  js  c++  java
  • iOS -- xxxViewController进行pop时直接crash进main.m,EXC_BAD_ACCESS(code=1,address=0x20)

    今天在调试程序时,遇到了奇怪的错误。我从主页跳进(push)一个ViewController时一切正常,但是返回主页(pop)时却crash了,直接跳进了main.m(EXC_BAD_ACCESS(code=1,address=0x20)),却没有任何错误日志。

    通常这样的崩溃出现,原因一般就是:调用了已经释放的内存空间,或者说重复释放了某个地址空间。开启Zombie Objects模式。

    开启Zombie Objects步骤1

    开启Zombie Objects步骤2

    然后我们再运行一次,重复最开始的步骤(push,pop),这次输出了错误信息。

    错误信息

    [xxxViewController retian] message sent to deallocated instance xxxxxxx

    在这里我参考了smking大佬的一篇文章(未经过大佬的允许,不敢转载或贴出传送门),原因是因为在一个UIViewController释放之后,又再次向这个VC调用了某些请求,在VC中设置了xx.delegate = self; 而VC释放后,xx没有释放,xx的回调方法还在调用delegate即VC,所以crash发生了。

    解决方法是,调用当前VC的-dealloc方法,在里面设置 xx.delegate = nil;就可以解决问题。

  • 相关阅读:
    虚拟机Linux环境搭建所遇到的 问题
    Java-字节流读写文件
    [ZJOI2019]语言
    [CTSC2006]歌唱王国
    CF500F New Year Shopping
    CF438E The Child and Binary Tree
    [GXOI/GZOI2019]旧词
    [LNOI2014]LCA
    [CTSC2017]吉夫特
    [SDOI2014]旅行
  • 原文地址:https://www.cnblogs.com/mafeng/p/7346222.html
Copyright © 2011-2022 走看看