我有一些代码,其中我实现了撤销功能,撤销功能如下:
- (void) undo
{
drawImage.image = pathArray.lastObject;
[pathArray removeLastObject];
}然后,我还有一个函数可以从屏幕上捕获当前图像;在这个函数中,我得到了EXC_Bad_ACCESS错误
[pathArray removeLastObjectatIndex:0];
在程序的这一部分中,不会进行其他函数调用。也许移动整个数组会有问题,但我不想使用撤销管理器。
有没有更好的方法,获取数组的最后一个对象,然后删除第一个对象并逐个移动整个数组?
注意:路径数组为MutableArray *patharray;,谢谢!=)
我只是不知道如何解决这个问题。我在官方文档中没有找到任何解决方案。
发布于 2012-03-01 03:50:21
最终,这个程序不太可能是可访问的--它意味着在许多情况下没有什么可以“撤销”的,并且不应该给出这个选项。你的问题最终往往出在上游。
如果情况并非如此,这里有一种方法:
- (void)undo
{
if (0 == self.pathArray.count) {
self.drawImage.image = nil;
return;
}
self.drawImage.image = self.pathArray.lastObject;
[self.pathArray removeLastObject];
}同样,[pathArray removeLastObjectatIndex:];也不是一个真正的选择器。
更新
查看我的答案here以启用和查找僵尸,并快速定位引用计数偏移量。你的程序永远不应该给僵尸发消息。
https://stackoverflow.com/questions/9505546
复制相似问题