首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阵列,内存管理

阵列,内存管理
EN

Stack Overflow用户
提问于 2012-03-01 03:40:11
回答 1查看 114关注 0票数 0

我有一些代码,其中我实现了撤销功能,撤销功能如下:

代码语言:javascript
复制
- (void) undo
{
    drawImage.image = pathArray.lastObject;
    [pathArray removeLastObject];
}

然后,我还有一个函数可以从屏幕上捕获当前图像;在这个函数中,我得到了EXC_Bad_ACCESS错误

[pathArray removeLastObjectatIndex:0];

在程序的这一部分中,不会进行其他函数调用。也许移动整个数组会有问题,但我不想使用撤销管理器。

有没有更好的方法,获取数组的最后一个对象,然后删除第一个对象并逐个移动整个数组?

注意:路径数组为MutableArray *patharray;,谢谢!=)

我只是不知道如何解决这个问题。我在官方文档中没有找到任何解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-01 03:50:21

最终,这个程序不太可能是可访问的--它意味着在许多情况下没有什么可以“撤销”的,并且不应该给出这个选项。你的问题最终往往出在上游。

如果情况并非如此,这里有一种方法:

代码语言:javascript
复制
- (void)undo
{
   if (0 == self.pathArray.count) {
     self.drawImage.image = nil;
     return;
   }

   self.drawImage.image = self.pathArray.lastObject;
   [self.pathArray removeLastObject];
}

同样,[pathArray removeLastObjectatIndex:];也不是一个真正的选择器。

更新

查看我的答案here以启用和查找僵尸,并快速定位引用计数偏移量。你的程序永远不应该给僵尸发消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9505546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档