MLeaksFinder 介绍与使用

MLeaksFinder是一款用于iOS开发的内存泄露检测工具,能在debug模式下自动检测UIView及UIViewController的内存泄露,无需修改业务逻辑代码。支持通过CocoaPods引入,并提供了几个常见的内存泄露示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、官方文档介绍以及github链接

http://wereadteam.github.io/2016/02/22/MLeaksFinder/

https://github.com/Zepo/MLeaksFinder

2、根据官方文档说明,MLeaksFinder可以在运行时(debug 模式下)帮助你检测项目里的内存泄露了,

无需修改任何业务逻辑代码,而且只在 debug 下开启,完全不影响你的 release 包。

 

 

  • MLeaks介绍

 

能够自动检测UIView以及UIViewController的内存泄露,使用断言的方式,能够打印出产生内存泄露的view-viewcontroller栈。如下所示:

从上往下,在MyTableViewController下面的表格视图的MyTableViewCell有内存泄露,上面已经显示的控制器和视图是没有内存泄露的。

MLeaksFinder的引入完全不侵入原有的代码,如果使用CocoaPods管理代码,可以在podfile中加入即可。

pod ‘MLeaksFinder’

 

  • 常见内存泄露示例

1、block中使用self,会造成循环引用

使用__weak __strong解决,或者使用宏定义wekify和strongify

2、ACHRInvitationCreditVC邀请授信中,在cell的block中引用了类扩展中的实例变量。

解决方法:

1)使用@weakify 和@strongify, 调用方式使用self->isAddrchStr

2)使用@weakify 和@strongify,将isAddrchStr定义为类扩展属性,使用self.isAddrchStr调用 

 

3、在block中使用属性自动生成的实例变量,如_name,会造成循环引用。属性的设置方法尽量使用self.name = someString;的形式。如ACHRDateT中使用的时间选择界面

4、对于使用UITabVC的子控制器,其引用的父控制器不能使用strong,应该使用assign,也可以在指定父控制器的时候使用weak属性。

使用weakSelf

 

5、ACHRWaitSubmitV中有一个内存泄露,一直没有找出来,貌似已经排除了上面的block和父控制器强引用

 

转载于:https://www.cnblogs.com/gumengli/p/8481893.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值