Open menghuanqi opened 7 years ago
不大懂你的意思,你只需关心 //#define MEMORY_LEAKS_FINDER_ENABLED 0 这个宏,用它来开关泄漏检测即可。
你好,我写了一个demo1,不支持cocoapods环境的,直接把MLeakerFinder拖进来了,程序就能运行,我写了一个demo2,它是支持cocoapods环境的,就是装各种第三方(如:AFNetworking)用cocoapods即可,但是demo2里面我不想用cocoapods装MLeakerFinder,也想直接拖进来用,把#define _INTERNAL_MLF_RC_ENABLED COCOAPODS 改了一下,又把需要的 FBMemoryProfiler 拖进来,改了各种报错,发现demo2不运行MLeakerFinder的代码
把 //#define MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED 0 改成 #define MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED 1 即可
把 //#define MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED 1 改成 #define MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED 1 给+load方法打了断点,依然不走代码
如果是把 MLeaksFinder 做为子工程,需要在主工程的 Build Settings -> Other Linker Flags 加上 -ObjC,如果不是做为子工程,而是直接加代码不进 +load 方法的,就要查一下原因了。
我想用UISwitch开关来控制泄露检测,有可行性么?
那就需要自己改代码了,比如说如果关了的话,就在 NSObject+MemoryLeak 的 - (BOOL)willDealloc 一开始直接 return NO
可是+load方法是必须运行的,开关开的时候return yes,开关关的时候return no, load方法早就运行过了,
你要在运行时动态的开关 MLeaksFinder,那么 load 方法是一定要的,load 方法里做的就是 hook 掉 pop 那些方法,你要在后期再通过 uiswitch 的开关来 hook 方法就麻烦了
在cocoapods环境下想运行非cocooapods的代码,我把NSObject+MemoryLeak.h文件的宏注释掉了,还是不运行,请问判断是否是cocoapods环境的宏是怎么定义的?