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既可。

相关推荐
Haha_bj12 分钟前
Swift UI 状态管理
ios·app
2501_916007473 小时前
iOS 应用性能测试的工程化流程,构建从指标采集到问题归因的多工具协同测试体系
android·ios·小程序·https·uni-app·iphone·webview
源码_V_saaskw3 小时前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序
tbit4 小时前
fluwx 拉起小程序WXLog:Error:fail to load Keychain status:-25300, keyData null:1
flutter·ios·微信小程序
Sheffi5 小时前
iOS 内存管理深度解析:从原理到实践
ios
QuantumLeap丶5 小时前
《Flutter全栈开发实战指南:从零到高级》- 19 -手势识别
flutter·ios·前端框架
00后程序员张6 小时前
iOS 抓不到包怎么办?从 HTTPS 解密、QUIC 排查到 TCP 数据流分析的完整解决方案
android·tcp/ip·ios·小程序·https·uni-app·iphone
Haha_bj7 小时前
Swift UI数据存储
ios
Zender Han17 小时前
Flutter 新版 Google Sign-In 插件完整解析(含示例讲解)
android·flutter·ios·web
Digitally18 小时前
如何在iPhone上共享日历
ios·iphone