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错误通常与不再存在的引用对象有关(即,它们被解除分配或者被自动释放)。 检查touchesBegan
或touchesEnded
这些问题:
- 任何不正确的
release
调用放置,当一个对象仍将被使用。 尝试将它们评论出来,看看错误是否消失。 - 使用自动释放的对象,而不是保留它们。 自动释放对象是使用直接引用类的方法名创build的对象,如下所示:
[NSString stringWith...]
或[NSArray arrayWith...]
,而不是使用alloc
和init
。
如需进一步的帮助,请尝试为这些方法包含一些代码片段。
要知道BAD_ACCESS在xCode中使用Zombie的原因,请查看链接http://www.markj.net/iphone-memory-debug-nszombie/