Zepo
Zepo
能否给个 demo 代码看看
不大懂你的意思,你只需关心 //#define MEMORY_LEAKS_FINDER_ENABLED 0 这个宏,用它来开关泄漏检测即可。
把 //#define MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED 0 改成 #define MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED 1 即可
如果是把 MLeaksFinder 做为子工程,需要在主工程的 Build Settings -> Other Linker Flags 加上 -ObjC,如果不是做为子工程,而是直接加代码不进 +load 方法的,就要查一下原因了。
那就需要自己改代码了,比如说如果关了的话,就在 NSObject+MemoryLeak 的 - (BOOL)willDealloc 一开始直接 return NO
你要在运行时动态的开关 MLeaksFinder,那么 load 方法是一定要的,load 方法里做的就是 hook 掉 pop 那些方法,你要在后期再通过 uiswitch 的开关来 hook 方法就麻烦了
跟 BSD 协议没关系,主要是 fb 的附加条款,apache基金会已经禁用 fb 的开源软件了,可去了解下。
1. 先确定是不是真的泄漏了,在报泄露的对象的 dealloc 里加断点。(现在 MLeaksFinder 的机制是不会误报的,只不过你要区分报泄漏的原因,是因为单例,还是释放不及时,还是真的泄漏) 2. 找出泄漏的原因并修复
先在报泄漏的类的 dealloc 里加断点,确认一下是不是真的没释放