在使用Xcode的Leaks時(shí),一進(jìn)程序就出現(xiàn)了泄漏.....打擊不小起便。后來(lái)定位到是因?yàn)?/p>
定位錯(cuò)誤的位置
心想,AFN的單例也報(bào)錯(cuò)窖维,這怎么改榆综?
于是Google,找到這篇文章使用AFNetworking 3 內(nèi)存泄露
說(shuō)是ARC機(jī)制中铸史,SessionManager沒(méi)創(chuàng)建但是沒(méi)有地方釋放鼻疮。解決方法就是講SessionManager改為單例即可。但是單例也會(huì)一直存在琳轿,沒(méi)有泄露但是卻占用內(nèi)存判沟。
覺(jué)得可以將AFHTTPSessionManager的類方法改為單例.....(菜鳥個(gè)人理解)
這是我解決部分代碼,就是改個(gè)單例
+ (instancetype)sharedManager {
static AFNRequest *afnManager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
afnManager = [[self alloc] init];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer.timeoutInterval = 10.f;
afnManager.manager = manager;
});
return afnManager;
}
(第一次寫崭篡,搜半天怎么寫代碼........附:類似/* xx */方式挪哄,代碼用字符為``` 包圍就可以了)