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和父控制器強引用
