ios开发笔记----exc_bad_access(code=1, address=0x789870)野指针错误,假死debug状态
来源:互联网 发布:js bind方法详解 编辑:程序博客网 时间:2024/06/03 05:09
错误原因:
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 菜单
- ios开发笔记----exc_bad_access(code=1, address=0x789870)野指针错误,假死debug状态
- 关于ios开发中遇到thread 1:exc_bad_access(code=1,address=0x50000010)类似的问题
- iOS 崩溃调试 exc_bad_access(code=1,address=0x10)
- EXC_BAD_ACCESS(code=1,address=0x40000000c)
- EXC_BAD_ACCESS (code=2, address=0x0)
- EXC_BAD_ACCESS (code =2,address=0x6f7fffbc)
- 【OC】thread 1:exc_bad_access(code=1,address=0x7fff7d72a7a0) 的一种解决方法
- block 传值 遇到的出错点:Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)
- Thread 1:EXC_BAD_ACCESS(code=1,address=0x70) (Done)
- EXC_BAD_ACCESS (code=1, address=0x0) when stepping in debugger
- iOS程序警告:EXC_BAD_ACCESS(code=1
- iOS程序警告:EXC_BAD_ACCESS(code=1
- 使用相机时切入后台报错:Thread1:EXC_BAD_ACCESS(code=1,address=0x1)解决办法之一
- xxxViewController进行pop时直接crash进main.m,EXC_BAD_ACCESS(code=1,address=0x20)
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- EXC_BAD_ACCESS(code=EXC_I386_GPFLT 错误解析
- android真实项目教程(四)——MY APP MY STYLE_by_CJJ
- hibernate的延迟加载的原理
- HDU 1097 A hard puzzle(规律)
- 唯美非主流相框图片
- ibatis的result标签中用select详解
- ios开发笔记----exc_bad_access(code=1, address=0x789870)野指针错误,假死debug状态
- 揭开Socket编程的面纱
- shell退出码
- MyEclipse 10.0破解,及建立Myeclipse中建立JFrame 和Swing插件的使用
- 使用PDFKit和Node.js生成服务器端PDF文件
- Light OJ 1045 - Digits of Factorial
- Net 一般上传文件
- 方物软件助力电子政务云顶层设计
- Java图形界面——事件监听与处理