关于AFNetworking3.0中AFHTTPSessionManager内存泄露的问题

在使用Xcode的Leaks时,一进程序就出现了泄漏.....打击不小。后来定位到是因为


定位错误的位置

心想,AFN的单例也报错,这怎么改?
于是Google,找到这篇文章使用AFNetworking 3 内存泄露

说是ARC机制中,SessionManager没创建但是没有地方释放。解决方法就是讲SessionManager改为单例即可。但是单例也会一直存在,没有泄露但是却占用内存。
觉得可以将AFHTTPSessionManager的类方法改为单例.....(菜鸟个人理解)


这是我解决部分代码,就是改个单例

+ (instancetype)sharedManager {
    static AFNRequest *afnManager;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        afnManager = [[self alloc] init];
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
        manager.responseSerializer = [AFHTTPResponseSerializer serializer];
        manager.requestSerializer.timeoutInterval = 10.f;
        afnManager.manager = manager;
    });
    return afnManager;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容