在touchesBegan之后立即进行EXC_BAD_ACCESS

时间:2011-11-21 21:07:09

标签: iphone ios xcode 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];

3 个答案:

答案 0 :(得分:2)

你为什么不用ARC ??? :) 很好!您没有保留ts集。请注意,setWithSet:会返回自动释放的实例。 (红圈看起来很有希望:))

答案 1 :(得分:2)

BAD_ACCESS错误通常与引用不再存在的对象有关(即,它们已被解除分配或已被自动释放)。在touchesBegantouchesEnded

中检查这些问题
  1. 当仍将使用对象时,release次调用的任何错误放置。尝试将它们注释掉,看看错误是否消失。
  2. 使用自动释放的对象而不是保留它们。自动释放的对象是使用直接引用类的方法名称创建的对象,如:[NSString stringWith...][NSArray arrayWith...],而不是allocinit
  3. 如需进一步的帮助,请尝试为这些方法添加一些代码段。

答案 2 :(得分:0)

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