许久之前帮朋友公司做的一个项目,意外地发现还在运营,一下子勾起了我的兴趣,翻出代码,看看还能做些什么。
第一步:内存泄漏检测
方案: MLeakFinders
理由:简单方便、不入侵项目逻辑、不用写任何代码
操作:CocoaPods
检测结果:
1. block
2. UIAlertController
3. MJRefresh (也可归属到block,单独列出来是因为这中情况的内存泄漏引用循环不能被直接明确的检测出来,只是提示在哪一个VC有内存泄漏)
修复:
- 1、3两种情况__weak typeOf(self) weakSelf = self;
- 第2种情况是因为在UIAlertAction的block回调中:
[alert dismissViewControllerAnimated:YES completion:nil];
导致的循环引用:UIAlertController -> UIAlertAction -> handler -> UIAlertController
第二步:新机型适配
直接修改.pch中的宏定义:
原来:
// 判断是否是iPhone X
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
修改后:
// 判断是否是iPhone X
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
// iphone X及其以上版本
#define LiuHaiX ({BOOL isPhoneX = NO;\
if (@available(iOS 11.0, *)) {\
isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;\
}\
(isPhoneX);})\
EN PERFECT. COMMIT.