原文地址:http://blog.csdn.net/d1w2hj/article/details/51793065
在使用instruments做內(nèi)存泄漏分析時继效,發(fā)現(xiàn)所有使用如下語句的地方都有內(nèi)存泄漏,OMG:
if(!_manager){
_manager = [AFHTTPSessionManager manager];
}
stack overflow上查了下并沒有找到好的解決方案豫尽,去github的AFN的issue區(qū)查了下,確實(shí)有幾個人提問了样悟,但是每人給出解決方案拂募。
沒人解決就算了,結(jié)果這貨自己莫名其妙沒泄漏了窟她,不繼續(xù)探究為什么上次有內(nèi)存泄漏陈症。
無奈只能找度娘了,還好找到了解決辦法震糖,有前輩給出了解決方案:
但是我所用到的網(wǎng)絡(luò)請求不是很復(fù)雜录肯,不想再新建類去寫單例了,就把單例放在了AppDelegate中吊说,用到的時候在通過AppDelegate拿论咏。因?yàn)樾枰玫紸FHTTPSessionManager和AFURLSessionManager,所以就各寫一個單例方法。
static AFHTTPSessionManager *manager ;static AFURLSessionManager *urlsession ;-(AFHTTPSessionManager *)sharedHTTPSession{? ? static dispatch_once_t onceToken;? ? dispatch_once(&onceToken, ^{? ? ? ? manager = [AFHTTPSessionManager manager];? ? ? ? manager.requestSerializer.timeoutInterval =10;? ? });returnmanager;}-(AFURLSessionManager *)sharedURLSession{? ? static dispatch_once_t onceToken2;? ? dispatch_once(&onceToken2, ^{? ? ? ? urlsession =[[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];? ? });returnurlsession;}
獲得AFHTTPSessionManager和AFURLSessionManager單例
//AFHTTPSessionManagerAppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication]delegate];AFHTTPSessionManager *manager = [app sharedHTTPSession];//AFURLSessionManagerAppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication]delegate];AFURLSessionManager *urlsession = [app sharedURLSession];
全部替換完之后再用 instruments跑一遍颁井,再也沒有紅叉了 ^_^ 厅贪。