Memory leaks 使用AFHTTPSessionManager时内存泄漏
环境:Memory leaks 使用AFHTTPSessionManager时内存泄漏,memory-leaks,afnetworking,Memory Leaks,Afnetworking,环境: iOS 13/iOS 10 代码11.1 AFN网络版本:3.2.1 Swift 4.2 说明: 使用AFNetworking发布或获取Json数据时,会导致内存泄漏,我创建了一个AFHTTPSessionManager,如下所示: private static func ConfigureAFManager(requestSerialization:HttpSerializationType=HttpSerializationType.HTTP, responseSerializati
private static func ConfigureAFManager(requestSerialization:HttpSerializationType=HttpSerializationType.HTTP,
responseSerialization:HttpSerializationType=HttpSerializationType.JSON,
超时:时间间隔=30,
标题:[字符串:字符串]?=nil
)->AFHTTPSessionManager{
让AFManager=AFHTTPSessionManager()
如果requestSerialization==.JSON{
AFManager.requestSerializer=AFHTTPRequestSerializer()
}
如果响应序列化==.HTTP{
AFManager.responseSerializer=AFHTTPResponseSerializer()
}
对于标题中的(键、值),[:]{
AFManager.requestSerializer.setValue(值,forHTTPHeaderField:key)
}
AFManager.requestSerializer.timeoutInterval=超时;
返回AFManager
}
然后我使用它来执行后期操作:
static func POST(httpURL:String,
参数:有吗?,
超时:时间间隔=30,
标题:[字符串:字符串]?=nil,
requestSerialization:HttpSerializationType=HttpSerializationType.HTTP,
responseSerialization:HttpSerializationType=HttpSerializationType.JSON,
成功:((任何?)->无效)?,
失败:((错误?->Void)?)->Void
{
让AFManager=self.ConfigureAFManager(requestSerialization:requestSerialization,responseSerialization:responseSerialization,timeout:timeout,headers:headers)
AFManager.post(httpURL,参数:parameter,进度:nil,成功:{(任务,响应)in
成功?(回应)
}){(任务、错误)
失败?(错误)
}
}
当我在Xcode上单击Debug Memory Graph
时,我发现AFHTTPSessionManager
和\nsursessionlocal
之间存在一些循环引用
这只发生在3.2.1版本的AFNetworking中吗?我知道为什么,因为AFNetworking使用URLSession,它的委托将建立一个强引用,所以使用后AFHttpSessionManager应该调用invalidateSessionCancelingTasks