EXC_BAD_ACCESS在touchesBegan之后

我已经开始了一个学习iOS编程的非常简单的项目,但是在touchesBegan之后我得到了EXC_BAD_ACCESS

您可以在这里从DropBox下载项目。

我基本上有一个UIView子类,应该在用户触摸的地方绘制圆圈。

很简单,但我不能让它工作。

任何帮助,高度赞赏。 谢谢!

编辑原来这个问题是在touchesBegan这行代码:

  ts = [NSMutableSet setWithSet: [event touchesForView:self]]; 

我改成:

  ts = [[NSMutableSet setWithSet: [event touchesForView:self]] retain]; 

你为什么不使用ARC? :) 这很好! 你不保留你的ts集。 注意,那setWithSet:返回你自动发布的实例。 (红圈看起来很有前途:))

BAD_ACCESS错误通常与不再存在的引用对象有关(即,它们被解除分配或者被自动释放)。 检查touchesBegantouchesEnded这些问题:

  1. 任何不正确的release调用放置,当一个对象仍将被使用。 尝试将它们评论出来,看看错误是否消失。
  2. 使用自动释放的对象,而不是保留它们。 自动释放对象是使用直接引用类的方法名创build的对象,如下所示: [NSString stringWith...][NSArray arrayWith...] ,而不是使用allocinit

如需进一步的帮助,请尝试为这些方法包含一些代码片段。

要知道BAD_ACCESS在xCode中使用Zombie的原因,请查看链接http://www.markj.net/iphone-memory-debug-nszombie/