通过Instrument检查到是由于AFNetworking这个库导致的内存泄漏,解决方法就是:
将AFHTTPSessionManager的实例使用单例模式获取。
原先在网络请求类中获取AFHTTPSessionManager是通过如下方法
AFHTTPSessionManager*manager = [[AFHTTPSessionManageralloc]initWithBaseURL:[NSURLURLWithString:@""]];
此方法就是导致内存泄漏的罪魁祸首,所以需要用单例获取AFHTTPSessionManager对象。
在AFHTTPSessionManager类中添加单例:
staticAFHTTPSessionManager*manager;
+(AFHTTPSessionManager*)sharedHttpSessionManager {
staticdispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [AFHTTPSessionManagermanager];
manager.requestSerializer.timeoutInterval=10.0;
});
returnmanager;
}
AFHTTPSessionManager*manager =[[AFHTTPSessionManagersharedHttpSessionManager]initWithBaseURL:[NSURLURLWithString:@""]];
或AFHTTPSessionManager*manager = [类名 sharedHttpSessionManager];
网友评论