使用AFNetworking 3 內(nèi)存泄露(轉(zhuǎn)載)

原文地址:http://blog.csdn.net/d1w2hj/article/details/51793065

在使用instruments做內(nèi)存泄漏分析時(shí),發(fā)現(xiàn)所有使用如下語(yǔ)句的地方都有內(nèi)存泄漏,OMG:

if(!_manager){

_manager = [AFHTTPSessionManager manager];

}

stack overflow上查了下并沒(méi)有找到好的解決方案,去github的AFN的issue區(qū)查了下,確實(shí)有幾個(gè)人提問(wèn)了,但是每人給出解決方案。

沒(méi)人解決就算了,結(jié)果這貨自己莫名其妙沒(méi)泄漏了,不繼續(xù)探究為什么上次有內(nèi)存泄漏。

無(wú)奈只能找度娘了,還好找到了解決辦法,有前輩給出了解決方案:

但是我所用到的網(wǎng)絡(luò)請(qǐng)求不是很復(fù)雜,不想再新建類去寫(xiě)單例了,就把單例放在了AppDelegate中,用到的時(shí)候在通過(guò)AppDelegate拿。因?yàn)樾枰玫紸FHTTPSessionManager和AFURLSessionManager,所以就各寫(xiě)一個(gè)單例方法。

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跑一遍,再也沒(méi)有紅叉了 ^_^ 。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容