我对iPhone开发和Xcode基本上是新手,不知道如何开始对EXC_BAD_ACCESS
信号进行故障排除.如何让Xcode在导致错误的那一行中断?
我似乎无法让Xcode停止导致问题的那一行,但我确实在调试控制台中看到了以下几行:
10月25日星期日15:12:14 JasonMacBook
10月25日星期日15:12:14 JasonMacBook
10月25日星期日15:12:14 JasonMacBook
10月25日星期日15:12:14 JasonMacBook
2009-10-25 15:12:14.680
现在,我正在try 绘制从UIGraphicsGetCurrentContext()
中检索到的上下文,并传递给我想要绘制的对象.
经过进一步的试错调试,我发现我的类上有一个属性的NSMutableArray
是一个僵尸.我为这个类介绍了init
函数,下面是我使用的代码:
if ((self = [super init])) {
NSMutableArray *array = [NSMutableArray array];
self.terrainBlocks = array;
[array release];
}
return self;
}
我删除了[array release]
线,它不再给我EXC_BAD_ACCESS
信号,但我现在不明白为什么这样做.我认为当我使用这个属性时,它会自动为我保留它,因此我应该在init
之内释放它,这样我就不会有泄漏.我完全搞不懂它是如何工作的,我只读过的所有指南和Stackoverflow问题更让我搞不懂如何在init方法中设置属性.对于哪种方式最好,似乎没有达成共识.