NSUndoManager 的 removeAllActions 方法失败问题,[self.undoManager undo]崩溃_swiftui undomanager undo 崩溃-程序员宅基地

技术标签: OC 语言  NSUndoManager  ios  removeAllActions  

NSUndoManager 被用做撤消和反撤消功能,具体的用法百度和google就好了。这里主要对我项目中的出现的

[self.undoManagerundo]; 崩溃问题做一个记录。


出现的问题是这样的,当第一次进入A界面时,A界面的地址为0x123,这时我做了2步操作,可以进行两次[self.undoManager undo]。问题从这里产生,如果退出界面前,我没有清掉撤消栈的内容,撤消栈的内容是一直保存在app里面的。

当我第二次进入A界面时,A界面的地址为0x222,如果此时我进行一次[self.undoManager undo]操作,则会崩溃,崩溃内容显示为 [0x123 retain], 但此时0x123是上一个界面的地址,已经被释放掉了,所以对野指针操作崩溃产生。


因此,需要在合适的地方使用

[self.undoManager removeAllActionsWithTarget:self] 或  [self.undoManager removeAllActions] 来清除撤消栈。

刚开始的做法是在dealloc方法里面使用这两个清除方法,但发现程序依然同样的崩溃错误。

经过断点后发现:dealloc方法里的self.undoManager地址为0x00,因此是没有调用到清除方法的。

如图所示,






版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gdutxzy/article/details/52781715

智能推荐

tar -xzvf xxx.tar.gz --strip 1用法_tar --strip 1-程序员宅基地

文章浏览阅读518次,点赞7次,收藏9次。参数,我们告诉tar命令在解压时剥离一层目录。首先,让我们通过一个例子来理解这个概念。但是,如果你想在解压后去掉。目录被剥离了,只剩下。_tar --strip 1

谈谈 通杀SSDT hook和Shadow SSDT hook的方法-程序员宅基地

文章浏览阅读1.5k次。链 接: http://bbs.pediy.com/showthread.php?t=143987有点纠结,不知道应不应该发,本来想多攒点东西,留着以后找工作。毕竟说空话被bs过。其实技术含量也不高,耐心研究下都能实现。发出来了,权当促进游戏保护和反保护事业的发展吧。大牛飘过吧,那些还没成为大牛就开始倚老卖老喜欢对刚入门的小菜指手画脚的,时不时的来一句“别瞎鼓捣了,你应该从这学起,你应该从_ssdt hook和shadow ssdt hook

使用腾讯云轻量应用服务器搭建网站教程(也太简单了)_腾讯云轻量应用服务器怎么搭建网站-程序员宅基地

文章浏览阅读6.9k次,点赞4次,收藏61次。码笔记一直想搭建个人网站博客,腾讯云轻量应用服务器还不错,公网带宽也够用,想着用搞台轻量服务器搭建个网站,没想到通过应用镜像,也太简单了,把全部教程分享给大家:本文是以轻量应用服务器上选择宝塔镜像,然后在宝塔面板上搭建WordPress博客;轻量应用服务器也支持WordPress镜像,也可以直接选择WordPress镜像更方便一些;当然如果需要在一台轻量应用服务器上安装多个网站,那么选择宝塔镜像更便捷。_腾讯云轻量应用服务器怎么搭建网站

【图像压缩】蚁群算法优化小波变换图像压缩【含Matlab源码 2177期】-程序员宅基地

文章浏览阅读757次,点赞23次,收藏12次。蚁群算法优化小波变换图像压缩完整的代码,方可运行;可提供运行操作视频!适合小白!

北汽上汽广汽为有感科技站台:主机厂眼中的无线充电技术应具备什么? ...-程序员宅基地

文章浏览阅读193次。很多技术都从手机移植到了汽车,无线充电无疑是其中颇为值得期待的一项。 在各种充电方式中,最便利的必然是自动无线充电。这种感应式充电技术可以以无线方式将将安装在地面上的充电板的电能传输到安装在车辆底部的电力接收板中,省去了驾驶者连接电缆这一步骤。 1月27日,有感科技在江苏南通召开技术发布会和南通制造基地启用仪式。同时,有感科技发布了新一代电动..._没事哥,公司是有感科技,做汽车充电的

git_prompt_info:20: character not in range-程序员宅基地

文章浏览阅读269次。vscode git日常问题解决_git_prompt_info

随便推点

机械臂控制器IO电压测试_富士康机械手i/o板输出电压-程序员宅基地

文章浏览阅读1.4k次。机械臂控制器IO电压测试1.准备1.1机械臂控制器型号确定实验室机械臂控制器是标准型,IO类型是NPN型。1.2 Mini IO 说明用于确定测试用的IO端口号。1.3 Mini IO电源设置控制器Mini IO默认为外部电源,在此不做改变。1.4 外部电源接线1.5 实验工具外部电源(24DC)、万用表、接线端子(2个)。2.实..._富士康机械手i/o板输出电压

BW的权限机制_bw账号权限-程序员宅基地

文章浏览阅读1.9k次。这个是为了权限检查那篇的扩展。从数据方面来考虑,我们要把不同系统的数据拿过来,然后给用户看。这里就涉及到权限了,根据职权不同,能看到的数据不同。跟ERP不同,ERP那边是你能进行哪些操作,但是BW这边是你能看到什么数据,和进行哪些操作。咱就只知道BW的皮毛,就只能总结总结BW的。首先,咱的用户简单分为 管理员用户和报表用户。文章目录权限对象分析授权创建role和profile分析授权的实现权限对象啥是权限对象?就像是一块块门禁令牌,你有了不同的令牌,通过不同的入口,别人检查了后才给你进。如果_bw账号权限

RSA加密解密算法原理以及实现_rsa简介及源码实现(3)_rsa加密算法的应用代码-程序员宅基地

文章浏览阅读705次,点赞9次,收藏20次。从古至今,如何用最有效的加密手段保护信息的安全性使之不被窃取、篡改或者破坏都是人们在信息传播中普遍关注的重大问题。最古老的文件加密手段莫过于对称加密,什么是对称加密,打个比方,有一个商人需要给合作伙伴送一批贵重的货物,他便将货物放在一个设置好密码的箱子中,这个密码只有商人知道,同时他又将设置好的密码提前告知合作伙伴,货物送达后,合作伙伴便可以用被告知的密码打开箱子取出货物。即用一种方法加密, 用同一种方法解密, 即为对称加密。_rsa加密算法的应用代码

C++ 保留2位小数_c++printf保留两位小数-程序员宅基地

文章浏览阅读1.7k次。【代码】C++ 保留2位小数。_c++printf保留两位小数

vscode设置idea快捷键-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏8次。VScode ctrl+shift+p打开命令窗,输入 Import IntelliJ Keybindngs (XML)把Untitled-1.json的内容复制到keybindings.json中覆盖并保存即可。首先要导出IDEA中的快捷键设置。在IDEA中选择导出设置,勾选自定义键盘映射并导出。选下拉第一个 直到出现,根据自己的PC调整,这里windos to windos。点击vscode左下角的 设置–>扩展。选择导入刚才解压得到的XML。_vscode设置idea快捷键

MerkleTree - 梅克尔树的 java 实现_merkle tree代码java-程序员宅基地

文章浏览阅读4.9k次。使用 java 实现 bitcoin 协议的 梅克尔树(MerkleTree) 的算法_merkle tree代码java

推荐文章

热门文章

相关标签