公司项目需要,不得不硬着头皮用swift3.0了,之前都是用swift2.3的,网络请求有的用afn,有的用Alarmfire,之前并没有刻意注意过内存的问题,现在这个项目也是swift用的afn,今天用leaks一测,90%以上的内存泄漏都出现在afn文件上
几乎每个有问题的都是这样的提示,那么问题来了,人家第三方库写的好好的,我们又不能擅自动人家已封装好的东东,只能自己找原因了,下面进入正题
1、首先在oc中用afn请求,创建AFHTTPSessionManager的时候,我们调用的是这个类的类方法+(instancetype)manager,但相信在swift坑里求生存的程序猿们也注意到了,我们在无法调用manager这个类方法,如果要创建AFHTTPSessionManager,只能这样: let manager = AFHTTPSessionManager() ,但这样的话,这个对象就不是单例了,每次请求都创建一次,很耗内存,解决方法是我们自己创建一个类,很简单的类,就是返回一个AFHTTPSessionManager的单例对象,一下是我的这个类里的代码
importUIKit
classManagerInstance:AFHTTPSessionManager{
//单例
staticletshareSingleOne =ManagerInstance()
}
我们在请求方法里这样使用就可以了
let manager = ManagerInstance.shareSingleOne
测过了,真的很管用的,真的真的~