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

相关推荐
疯狂的程序猴9 小时前
Flutter应用代码混淆完整指南:Android与iOS平台配置详解
后端·ios
SY.ZHOU10 小时前
移动端架构体系(五):终篇总结
flutter·ios·系统架构·安卓·鸿蒙
Digitally15 小时前
如何不用 iTunes 将 iPhone 备份到移动硬盘?
ios·iphone
sysinside15 小时前
Cisco Catalyst 9000 IOS XE 26.1.1 GA - 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件
ios·cisco
低保和光头哪个先来15 小时前
解决 ios 使用 video 全屏未铺满页面问题
前端·javascript·vue.js·ios·前端框架
报错小能手16 小时前
SwiftUI 框架 认识 SwiftUI 视图结构 + 布局
ui·ios·swift
2501_9159214316 小时前
HTTP和HTTPS协议全面解析:技术原理与安全应用
安全·http·ios·小程序·https·uni-app·iphone
悟空爬虫-彪哥16 小时前
VRCFaceTracking安装和iPhone面捕配置教程,有bug
ios·bug·iphone
想个名字想老半天16 小时前
uni离线打包实现 ios 支付StoreKit 2,其实没有想象中那么复杂,不需要写原生插件,不需要转 uts
macos·ios·cocoa
报错小能手1 天前
ios开发方向——swift错误处理:do/try/catch、Result、throws
开发语言·学习·ios·swift