关于ios 里面碰到内存错误的两种设置
来源:互联网 发布:时时彩软件哪个好 编辑:程序博客网 时间:2024/06/14 19:02
1、EXC_BAD_ACCESS内存错误与NSZombieEnabled
EXC_BAD_ACCESS是最常见的错误了,这个一般是访问了释放了的内存地址空间造成的。比如一个对象已经dealloc了,如果你仍向这个对象发送消息,就会出现这个错误。由于出现这个错误时,几乎不显示什么有用的信息,我们根本无法确定程序错在何处。使用NSZombieEnabled环境变量可以很好的解决这个问题。
打开你的工程,选择菜单“Product->Edit Scheme”或快捷键“Commend+<”
NSZombieEnabled环境变量使释放的内存继续保持对象的信息,如果我们向一个已经释放的对象发送一个消息,我们会得到一个错误消息,而且程序自动断点到出错的位置。如我们向一个已经释放了的UIButton对象发送description消息,就会在调试终端上得到以下消息:
*** -[UIButton description]: message sent to deallocated instance 0x1580f360
此时,程序将自动断点到”[UIButton description];”这行代码上。
2、Framework内部对象出现Overrelease与MallocStackLoggingNoComp
通过NSZombieEnabled环境变量,我们可以很多Bug了。但有时错误发生在framework内部,这时断点的当前栈并不在我们的代码当中。比如:
xxx: *** -[CALayer release]: message sent to deallocated instance 0xe250df0
这个CALayer并不是我们直接创建,而且release消息也不发生在我们的代码中。我们完全不知道这个CALayer是那个View的。所以就没法明确那个类出现问题。如果知道这个CALayer在什么地方alloc的就好了,这时我们就需要MallocStackLoggingNoComp
当message sent to deallocated instance消息产生时,在调试终端输入:
info malloc-history 0xe250df0
就会打印layer alloc时栈的情况,可以看到代码调用情况,找到我们自己的代码,检查代码并修改吧。
- 关于ios 里面碰到内存错误的两种设置
- 关于iOS中图片加载的两种方式的区别以及和内存的关系
- [ios]关于内存错误调试
- #关于IOS 里面的Warning#
- 关于Menu的两种设置方法
- iOS关于model的两种写法
- 【未解决】碰到一个关于报磁盘失败的错误
- 碰到的一些错误
- ios 关于如何在app里面设置版本更新功能
- 模仿IOS里面的UIActionSheet控件,有IOS6和IOS7两种风格
- 关于APUE里面TELL_WAIT()之类函数的两种实现方式
- 关于C++里面折叠代码的两招
- ios 设置屏幕方向的两种方法
- ios 设置屏幕方向的两种方法
- ios 设置屏幕方向的两种方法
- iOS 设置屏幕方向的两种方法
- iOS 导航栏设置颜色的两种方法
- ios 两种方法设置tabBar的UITabBarItem
- php简体转繁体
- 【转】CString.Format的详细用法
- android——Handler类的一些基本使用
- UIDeviceOrientation 和 UIInterfaceOrientation 设备旋转的用法 (实例)
- 数据结构 -逻辑结构
- 关于ios 里面碰到内存错误的两种设置
- Maven安装配置
- ios开发之打开系统的声音
- spring 定时器 (TimerTask and Quartz)
- 陶仁贤学习笔记4
- 数据结构-线性结构
- 聚焦潼关:决定唐帝国命运的历史时刻
- QT-常用功能
- LInux的Shell命令结果接入程序