日期:2014-05-16 浏览次数:21039 次
xcode4 4.x
?
EXC_BAD_ACCESS这个问题一直不好调试,之前有看到过说配置一个环境变量可以很方便的跟踪问题,因此试了一下,发现还真是方便了很多,以下是XCODE 4的配置方法: Edit Scheme->Arguments->Environment variables 增加 NSZombieEnabled ,设置为YES,并勾选上,OK,再次运行,在console就会显示出出错的地方了. (另外: NSLog(@"id :?%@",id);??? //id is integer,should be printed as?%d 像这样的语句也会引起EXC_BAD_ACCESS,大家要注意了哦 ) ? ?
?
?
xcode 3.x.x
http://www.cocoachina.com/macdev/objc/2011/0219/2661.html
??? 写程序遇到 Bug 并不可怕,大部分的问题,通过简单的 Log 或者 代码分析并不难找到原因所在。但是在 Objective-C 编程中遇到 EXC_BAD_ACCESS 问题的时候,通过简单常规的手段很难发现问题。这篇文章,给大家介绍一个常用的查找 EXC_BAD_ACCESS 问题根源的方法。
??? 首先说一下 EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源在于对一个已经释放的对象进行release操作。举一个简单的例子来说明吧,首先看一段Java代码:
public class Test{
??????? public static void main(String[] args){
??????????????? String s = “This is a test string”;
??????????????? s = s.substring(s.indexOf(“a”),(s.length()));
??????????????? System.out.println(s);
????????????????
??????? }
}
??? 这种写法在Java中很常见也很普遍,这不会产生任何问题。但是到了 Objective-C 中,就会出事,考虑这个程序:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * p