iOS强引用引起的内存泄漏

项目中遇到一个问题:

1.在A页面的ViewDidLoad 方法里写了一个接收通知的方法,如下图: 然后在B页面发送通知

(注:下图的NOTI 是 [NSNotificationCenter defaultCenter] 的宏, 考虑一下可能有小白看这篇文章,特意说明一下😂)

然后发现A页面在成功接收通知后,执行了很多遍"接收通知的方法",就是上图的 payMonthVipSuccess 方法走了很多遍。 (查找问题发现,我打开几次A页面,payMonthVipSuccess方法就走了几遍),然后定为问题为,离开A页面后,通知没有移出,即没有走页面的 - (void)dealloc 方法

解决问题:

  • (void )dealloc方法,是因为当前页面有强引用引起内存泄漏,你可以理解为还有东西在,所以不可以移出。

这种情况通常是A页面有Block代码,Block代码里用了Self,而不是 weakSelf。如下图

最后全局搜索A页面的Block代码,把Block代码里的self全部改为weakSelf既可。

相关推荐
YF021112 小时前
Flutter 编译卡顿解决方案
android·flutter·ios
空中海13 小时前
第十一章:iOS性能优化、测试与发布
ios·性能优化
iAnMccc14 小时前
Swift Codable 的 5 个生产环境陷阱,以及如何优雅地解决它们
ios
iAnMccc14 小时前
从 HandyJSON 迁移到 SmartCodable:我们团队的实践
ios
kerli15 小时前
基于 kmp/cmp 的跨平台图片加载方案 - 适配 Android View/Compose/ios
android·前端·ios
懋学的前端攻城狮17 小时前
第三方SDK集成沉思录:在便捷与可控间寻找平衡
ios·前端框架
冰凌时空20 小时前
Swift vs Objective-C:语言设计哲学的全面对比
ios·openai
花间相见21 小时前
【大模型微调与部署03】—— ms-swift-3.12 命令行参数(训练、推理、对齐、量化、部署全参数)
开发语言·ios·swift
SameX21 小时前
删掉ML推荐、砍掉五时段分析——做专注App时我三次推翻自己,换来了什么
ios
YJlio1 天前
2026年4月19日60秒读懂世界:从学位扩容到人形机器人夺冠,今天最值得关注的6个信号
python·安全·ios·机器人·word·iphone·7-zip