1.内存泄漏检测日志之

在使用instruments做内存泄漏分析时,发现所有使用如下语句的地方都有内存泄漏,OMG:

if (!_manager) {

         self.manager = [AFHTTPSessionManager manager];

}

只能找度娘了,还好找到了解决办法,有前辈给出了解决方案:

但是我所用到的网络请求不是很复杂,不想再新建类去写单例了,就把单例放在了AppDelegate中,用到的时候在通过AppDelegate拿。因为需要用到AFHTTPSessionManager和AFURLSessionManager,所以就各写一个单例方法。

static AFHTTPSessionManager *manager ;

static AFURLSessionManager *urlsession ;

-(AFHTTPSessionManager *)sharedHTTPSession{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

manager = [AFHTTPSessionManager manager];

manager.requestSerializer.timeoutInterval = 10;

});

return manager;

}

-(AFURLSessionManager *)sharedURLSession{

static dispatch_once_t onceToken2;

dispatch_once(&onceToken2, ^{

urlsession = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

});

return urlsession;

}

获得AFHTTPSessionManager和AFURLSessionManager单例

//AFHTTPSessionManager

AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];

AFHTTPSessionManager *manager = [app sharedHTTPSession];

//AFURLSessionManager

AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];

AFURLSessionManager *urlsession = [app sharedURLSession];

全部替换完之后再用 instruments跑一遍,再也没有红叉了 ^_^ 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容