許久之前幫朋友公司做的一個項目汇跨,意外地發(fā)現(xiàn)還在運營务荆,一下子勾起了我的興趣,翻出代碼穷遂,看看還能做些什么函匕。
第一步:內(nèi)存泄漏檢測
方案: MLeakFinders
理由:簡單方便、不入侵項目邏輯蚪黑、不用寫任何代碼
操作:CocoaPods
檢測結果:
1. block
2. UIAlertController
3. MJRefresh (也可歸屬到block,單獨列出來是因為這中情況的內(nèi)存泄漏引用循環(huán)不能被直接明確的檢測出來盅惜,只是提示在哪一個VC有內(nèi)存泄漏)
修復:
- 1中剩、3兩種情況__weak typeOf(self) weakSelf = self;
- 第2種情況是因為在UIAlertAction的block回調(diào)中:
[alert dismissViewControllerAnimated:YES completion:nil];
導致的循環(huán)引用: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.