AFN引起的内存泄露问题


最近闲的没事分析了一下火眼的代码看看有没有内存泄露的问题

结果吓了一跳

一大堆红红的叉叉

内存泄露成一匹马了都

后来发现是[AFHTTPSessionManager manager]这个方法引起的

看了一下源码

这个方法内部会初始化一个NSURLSession并且把自己作为delegate传过去

问题就在这里

NSURLSession对delegate是强引用

所以manager没被释放

那么解决起来也很简单

AFHTTPSessionManager对finishTasksAndInvalidate跟invalidateAndCancel进行了封装

直接调用invalidateSessionCancelingTasks就行

当然必须要在回调执行完毕之后