错误原因:
exc_bad_access(code=1, address=0x789870)野指针错误,主要的原因是,当某个对象被完全释放,也就是retainCount,引用计数为0后。再去通过该对象去调用其它的方法就会出现野指针错误。例如:
Person *jerry = [[Person alloc]init]; // retainCount引用计数为1
[jerry eat]; // 调用吃的方法
[jerry release]; // 释放jerry这个对象到 retainCount引用计数为0
// 此时如果继续引用jerry这个对象就会出现野指针错误,exc_bad_access
[jerry sleep];
解决方法:
首先得定位到哪里出现的这样野指针引用错误,如果是大型的项目代码量一大,找起来是非常痛苦的。
IOS提供了一个环境变量设置来帮忙定位错误位置的信息描述:NSZombieEnabled ,就是当 设置NSZombieEnabled环境变量后,一个对象销毁时会被转化为_NSZombie,设置NSZombieEnabled后,当你向一个已经释 放的对象发送消息,这个对象就不会向之前那样Crash或者产生一个难以理解的行为,而是放出一个错误消息,然后以一种可预测的可以产生debug断点的 方式消失, 因此我们就可以找到具体或者大概是哪个对象被错误的释放了。
例如会出现这样的提示:
[jerry sleep]:message sent to deallocated instance 0x78d7ed0
设置NSZombieEnabled环境变量,XCode4中:
你可以点击 Xcode4 菜单 Product -> Edit Scheme-> Arguments, 然后将点击”加号”, 将 NSZombieEnabled 参数加到Environment Variables 窗口中, 后面的数值写上 ”YES”.
或者在 Xcode4 菜单 Product -> EditScheme -> Diagnostics 设置窗口中直接勾上Enable ZombieObjects 即可,Xcode 可用 cmd+shift+< 进到这个窗口。
相关推荐
在ios开发过程中经常出现EXC_BAD_ACCESS错误而导致程序崩溃,这里将介绍如何利用XCode和Instrument来查找错误发生的地方,从而更好的定位
首先说一下 EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源在于对一个已经释放的对象进行release操作。举一个简单的例子来说明吧,首先看一段Java代码: 代码如下:public class Test{ public static void ...
详细介绍了通过Instrument工具,可视化的定位EXC_BAD_ACCESS 错误的位置。是本人自己实践总结出来,绝对好用。
查找 EXC_BAD_ACCESS 问题根源的方法
NULL 博文链接:https://bengan.iteye.com/blog/1471440
db2exc_975_WIN 数据库安装包,官网下载,亲测可用。 IBM DB2 是一套关系型数据库管理系统,DB2 Express - C
db2exc_970_LNX_x86_64.tar.gz Linux 64位系统 的db2 安装包。(第一部分)
db2exc_970_LNX_x86_64.tar.gz Linux 64位系统 的db2 安装包。(第二部分) 另一部分:https://download.csdn.net/download/qq_37570669/11260296
ad7745 AD7746电容检测芯片I2C接口 C51单片机驱动... flag_exc=SETUP_7746(0X09,0X0B); flag_config=SETUP_7746(0x0a,0xa2); flag_capdac=SETUP_7746(0x0b,0x7f); key_init(); __enable_interrupt(); //开启总中
重要信息2017年09月25日18:42:00 修复了在iOS11下必现EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)的崩溃BUG。已知bug提示:在替换模式LiveGiftAddModeReplace下使用animatedWithGiftModel方法将导致UI...
在实际调试程序的过程中,有时只获得异常的类型是远远不够的,还需要...模块 sys 中,有两个方法可以返回异常的全部信息,分别是 exc_info() 和 last_traceback(),这两个函数有相同的功能和用法,本节仅以 exc_info
电磁波时域有限元分析代码,更够很好的仿真波形不失真
with 用法理解 Overview with 与with之后的object一起,起到了抛出异常和单独... def __exit__(self, exc_type, exc_val, exc_tb): print('exit') if __name__ == '__main__': a = A() with a: print('first st
CGImageIssueDemo 核心图形问题测试 做什么的 似乎对于iOS 11.2 +, CoreGraphics.framework发生了奇怪的... 这导致EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000 。 重现步骤 使用CGDataProviderCreateDi
excitatory neuron connection.
1、序号根据填入的分部分项名称自动填出1~N的数值。 2、代码栏根据填入的数据自动给出同一分部分项名称序号,为汇总提供方便。 3、项目名称/计算部位栏中书写分部分项名称、计算部位。 4、计算式栏中填入加、减、乘...
except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a ...
主要涉及ADO编程模型中的记录集。