码农的世界iOS开发攻城狮的集散地iOS开发_性能优化

iOS AFHTTPSessionManager内存泄漏解决方案

2018-07-31  本文已影响11人  齐舞647

第一种方案:把该manager封装成单例

解决理由:内存中的某一块固定的地址就用来存放manager,专门用来网络请求和释放

问题:很明显,同一时刻只能有一个网络请求。异步会有问题。当两个线程同时申请manager对象时,肯定有一个manager申请不到,无法网络请求

第二种方案:在网络请求的block内把task取消掉

无论是success,还是failure的回调都取消掉,当然在block外部需要弱化一下manager对象

__weak typeof(manager) weakManager = manager;

然后在两个回调方法里加上

[weakManager invalidateSessionCancelingTasks:YES];

推荐第二种,封装在某个网络请求基类里,或者每次网络请求结束都写上。

完美解决了用leaks检测出来的内存泄漏问题。

上一篇 下一篇

猜你喜欢

热点阅读