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