objective-c - 数组、内存管理

标签 objective-c ios arrays xcode ios5

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

- (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/

相关文章:

objective-c - OBJ-C 到 Swift 3 的转换错误

ios - UICollectionView 自定义行分隔符

ios - tableview 使应用程序变慢,并需要时间来获取数据 - swiftyJSON

ios - 获取我和另一个用户之间的 Facebook 共同好友

iOS 重新加载两个 tableView 部分

c++ - ubuntu Linux 中的数组复制实际上不起作用

java - 将数组中的整个数组内容转入

php - 使用 PHP 将未知行数插入 MySQL

带有 Assets 目录的 iOS 图像切片会产生奇怪的伪像

objective-c - 如何将 OCLint 用于 Cocoa 框架?