我一般是 iPhone 开发和 Xcode 的新手,不知道如何开始对EXC_BAD_ACCESS
信号进行故障排除。如何让 Xcode 在导致错误的确切行处中断?
我似乎无法让 Xcode 在导致问题的行上停止,但我确实在调试控制台中看到以下行:
10 月 25 日星期日 15:12:14 jasonsmacbook TestProject[1289]:CGContextSetStrokeColorWithColor:无效上下文
10 月 25 日星期日 15:12:14 jasonsmacbook TestProject[1289]:CGContextSetLineWidth:无效上下文
10 月 25 日星期日 15:12:14 jasonsmacbook TestProject[1289]:CGContextAddPath:无效上下文
10 月 25 日星期日 15:12:14 jasonsmacbook TestProject[1289]:CGContextDrawPath:无效上下文
2009-10-25 15:12:14.680 LanderTest[1289:207] *** -[CFArray objectAtIndex:]: 消息发送到已释放实例 0x3c4e610
现在,我试图绘制到我从中检索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 方法中设置属性感到困惑。对于哪种方式最好,似乎没有共识。