项目中RunTime后期维护中遇坑举例

拖入LEETheme后,导致控制器、视图不走dealloc方法

一、验证问题:
  • 1.创建一个HelloWord项目,

  • 2.创建两个控制器 A_ViewControllerB_ViewController

  • 3.A为rootVC,A进入B,然后B点击返回后,B正常调用dealloc释放

  • 4.拖入LEETheme后,导致B_ViewController 不走dealloc方法;

截屏2020-05-05 下午10.47.15.png
就是这三个文件,一旦拖入项目,
不用引入头文件,
不用任何操作,
就会导致整个项目里的控制器都不走dealloc
二、开始着手定位问题:

1.断点调试 ==》发现项目断在:LEETheme.m文件

// LEETheme.m文件的
- (BOOL)isLeeTheme{ 

现象:
该方法会随时被调用;
1.初始化控制器会调用
2.项目开启后,会时不时自己调用一下;

↓↓↓↓↓↓
LEEThemeConfigObject

  • 追踪,发现是由lee_theme_dealloc方法一直在被调用引起的;
截屏2020-05-05 下午11.13.01.png
加了一个
NSLog后,
Mac都被搞
死机了😂
LEEThemeConfigObject

↓↓↓↓↓↓

  • @implementation NSObject (LEEThemeConfigObject)

  • 重写了+(void) load{ } 方法;


    截屏2020-05-05 下午11.44.00.png
  • 不是很懂应该怎么改,申请添加作者好友了,明天问问作者吧
//
LEE神的代码很优雅,不敢随随便便更改,
注释了method_exchangeImplementations(originalMethod, leeMethod);暂时不出现问题了。

几天后


LEE神居然同意我申请加好友了——灰常感谢😄

经过LEE神的指点,发现问题并没有出现在LEETheme 的Demo中,
我对比了一下,发现了问题所在了

==》lee_theme_dealloc方法中,最后有一句 [self lee_theme_dealloc];

不知道被这个项目的哪位前辈给注释了┭┮﹏┭┮,我悲催的

前边交接的人们啊,你们咋就这么舍得坑我啊...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容