为什么block容易出现内存泄露,根本原因是存在对象间的循环引用问题(对象a强引用对象b,对象b强引用对象a)。接下来看看以下几种情况。
1.
结论:会出现内存泄露。这也最常见的block循环引用。
2.
结论:会出现内存泄露。
3.
结论:不会出现内存泄露。
分析:
注意此处的block 是局部的,不是全局属性。self对此block不存在强引用,所以不存在循环引用。
4.
结论:会出现内存泄露。
分析:这种情况可以和第3种情况做对比。这里把block做为了全局变量,故会出现循环引用。
5.
结论:不会出现内存泄露。
分析:类方法,没有构成对象相互引用。
总结:分析block是否存在内存泄露,关键还是分析是否存在对象间的相互强引用。
做项目有一点点心得体会,请大家多多请教。